Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump ddtrace from 0.54.1 to 1.8.0 #137

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

dependabot[bot]
Copy link

@dependabot dependabot bot commented on behalf of github Dec 16, 2022

Bumps ddtrace from 0.54.1 to 1.8.0.

Release notes

Sourced from ddtrace's releases.

1.8.0

Happy holidays! This release includes two big items we're pretty excited about and want to call out explicitly:

  • CPU Profiling 2.0 is now in beta!
  • redis 5 instrumentation upgrade notes

CPU Profiling 2.0 is now in beta!

As of ddtrace 1.8.0, CPU Profiling 2.0 is now in opt-in (that is, disabled by default) public beta.

You can enable it:

  • Using an environment variable by setting DD_PROFILING_FORCE_ENABLE_NEW=true
  • Or via code by adding to your Datadog.configure block:
Datadog.configure do |c|
  # … existing configuration …
c.profiling.advanced.force_enable_new_profiler = true
end

What to expect from Ruby CPU Profiling 2.0 beta?

  • Finer-grained profiling data due to our sampling engine rewritten in C+Rust. The profiler will be able to run more often and get more information while keeping the same 2% overhead target you’re used to, and with a lower impact on latency. Especially when looking at the “Code Hotspots” panel for a distributed trace, expect more and finer grained profiles.
  • Thread id information now includes the operating system thread id for Ruby 3.1+, so you’ll be able to correlate your thread information when looking at other system monitoring tools
  • Thread names are now collected and you’ll be able to filter your profiles by these names
  • Experimental support for capturing CPU and Wall-time spent doing Garbage Collection. This is disabled by default as we’re still improving the performance of this feature and fixing a few incompatibilities with Ruby Ractors. You can enable it by adding DD_PROFILING_FORCE_ENABLE_GC=true or c.profiling.advancedforce_enable_gc_profiling = true to the instructions seen above.

…with more and faster improvements to come in early 2023!

Give it a try, and we’d love to hear your feedback. Do note that while in beta, we don’t recommend using Ruby CPU Profiling 2.0 in production environments. Below, you’ll find a list of known issues that we’re still looking into.

Known issues:

  • Profiling CPU-time overhead is not shown in flamegraphs (unlike with the existing profiler). We will be fixing this soon!

  • Rare incompatibilities with native extensions/libraries.

    Ruby CPU Profiling 2.0 gathers profiling data by sending SIGPROF unix signals to Ruby applications. This is a common approach used by many other profilers, and it may cause system calls performed by native extensions/libraries to be interrupted with an EINTR error code (reference).

    Most native extensions/libraries are unaffected by this issue, but we know of at least one case: when using the mysql2 gem together with versions of libmysqlclient older than 8.0.0 this can lead to failed database requests (reference). The affected libmysqlclient version is known to be present on Ubuntu 18.04, but not 20.04 and later releases.

    We expect these occurrences to be rare, and will be working to both improve the ecosystem as well as to deploy countermeasures in the profiler itself to avoid triggering these issues.

  • Ruby 2.5 and below are missing an API that allows the profiler to detect the currently-active Ruby thread. We have deployed a workaround, but suspect that it may lead to crashes in extremely rare situations. We are still researching a solution for this issue and do not plan on rolling out CPU Profiling 2.0 automatically to Ruby 2.5 and below applications until it is fixed.

  • The disabled-by-default experimental support for capturing CPU and Wall-time spent doing Garbage Collection is incompatible with Ractors due to Ruby upstream bugs (https://bugs.ruby-lang.org/issues/18464 and https://bugs.ruby-lang.org/issues/19112). We plan to work with the Ruby developers to incorporate fixes for these issues.

  • The disabled-by-default experimental support for capturing CPU and Wall-time spent doing Garbage Collection can cause a lot of overhead in Ruby applications with high object allocation rates. We will be fixing this soon!

redis 5 instrumentation upgrade notes

dd-trace-rb officially supports redis 5 instrumentation. When upgrading redis gem to 5.x and with configuration per instance, change your code by passing {custom: datadog: { … }} tags during redis instantiation.

... (truncated)

Changelog

Sourced from ddtrace's changelog.

[1.8.0] - 2022-12-14

Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v1.8.0

As of ddtrace 1.8.0, CPU Profiling 2.0 is now in opt-in (that is, disabled by default) public beta. For more details, check the release notes.

Added

  • Core: Profiling: [PROF-6559] Mark Ruby CPU Profiling 2.0 as being in beta (#2489[])
  • Tracing: Attempt to parse future version of TraceContext (#2473[])
  • Tracing: Add DD_TRACE_PROPAGATION_STYLE option (#2466[])
  • Integrations: Tracing: SQL comment propagation full mode with traceparent (#2464[])
  • Integrations: Tracing: Wire W3C propagator to HTTP & gRPC propagation (#2458[])
  • Integrations: Tracing: Auto-instrumentation with service_name from environmental variable (#2455[])
  • Core: Integrations: Tracing: Deprecation notice for B3 propagation configuration (#2454[])
  • Tracing: Add W3C Trace Context propagator (#2451[])
  • Integrations: Tracing: Redis 5 Instrumentation (#2428[])

Changed

  • Tracing: Changes error.msg to error.message for UNC (#2469[])
  • Tracing: Semicolons not allowed in 'origin' (#2461[])
  • Core: Dev/refactor: Tracing: Dev/internal: Move Utils#next_id and constants to Tracing::Utils (#2463[])
  • Core: Dev/refactor: Tracing: Dev/internal: Move Tracing config settings from Core to Tracing (#2459[])
  • Core: Dev/refactor: Tracing: Dev/internal: Move Tracing diagnostic code from Core to Tracing (#2453[])

Fixed

  • Integrations: Tracing: Improve redis integration patching (#2470[])
  • Tracing: Extra testing from W3C spec (#2460[])

[1.7.0] - 2022-11-29

Added

  • Integrations: Support que 2 (#2382[]) ([@​danhodge][])
  • Tracing: Unified tagging span.kind as server and client (#2365[])
  • Tracing: Adds span.kind tag for kafka, sidekiq, racecar, que, shoryuken, sneakers, and resque (#2420[], #2419[], #2413[], #2394[])
  • Tracing: Adds span.kind with values producer and consumer for delayed_job (#2393[])
  • Tracing: Adds span.kind as client for redis (#2392[])
  • Appsec: Pass HTTP client IP to WAF (#2316[])
  • Unified tagging process_id (#2276[])

Changed

  • Allow debase-ruby_core_source 0.10.18 to be used (#2435[])
  • Update AppSec ruleset to v1.4.2 (#2390[])
  • Refactored clearing of profile data after Ruby app forks (#2362[], #2367[])
  • Tracing: Move distributed propagation to Contrib (#2352[])

Fixed

... (truncated)

Commits
  • ac49c55 Merge pull request #2491 from DataDog/bump_to_version_1.8.0
  • 65716d3 Remove release notes details from CHANGELOG.md, leave link to github
  • adbb4c2 Avoid using non-ascii characters in CHANGELOG.md
  • 7bf386c Updated: gemfiles for 1.8.0
  • afdb776 Bumping version 1.7.0 to 1.8.0
  • 19e82c3 Added: 1.8.0 to CHANGELOG.md
  • 9dbd6d5 Merge pull request #2490 from DataDog/tonycthsu/add-dbm-full-mode-doc
  • fd88411 Merge pull request #2489 from DataDog/ivoanjo/prof-6559-cpu-profiling-2-beta
  • 92405d7 Add full mode support in documentation
  • 91cc4c5 Update warnings shown when new profiler is enabled in preparation for beta
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 0.54.1 to 1.8.0.
- [Release notes](https://github.com/DataDog/dd-trace-rb/releases)
- [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md)
- [Commits](DataDog/dd-trace-rb@v0.54.1...v1.8.0)

---
updated-dependencies:
- dependency-name: ddtrace
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added dependencies Pull requests that update a dependency file ruby Pull requests that update Ruby code labels Dec 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dependencies Pull requests that update a dependency file ruby Pull requests that update Ruby code
Projects
None yet
0 participants