Version 8.15.0 of the agent confirms compatibility with Ruby 3.2.0, adds instrumentation for concurrent-ruby, and confirms Sinatra 3 compatibility with Padrino 0.15.2. It also enables batching and compression for Infinite Tracing.
Add Support for Ruby 3.2.0
Following the 3.2.0 release of Ruby, the New Relic Ruby Agent has confirmed compatibility with and now supports the official release of Ruby 3.2.0. PR#1715
Add instrumentation for concurrent-ruby
Instrumentation for the concurrent-ruby gem has been added to the agent for versions 1.1.5 and above. When a transaction is already in progress and a call to a Concurrent:: method that routes through Concurrent::ThreadPoolExecutor#post is made, a segment will be added to the transaction. Any content within the block passed to the Concurrent:: method that is instrumented by the agent, such as a call to Net::HTTP.get, will have a nested segment created. PR#1682
Configuration name
Default
Behavior
instrumentation.concurrent_ruby
auto
Controls auto-instrumentation of the concurrent-ruby library at start up. May be one of auto, prepend, chain, disabled.
Infinite Tracing: Use batching and compression
For Infinite Tracing, which Ruby applications can leverage with the newrelic-infinite_tracing gem, payloads will now be batched and compressed to signficantly decrease the amount of outbound network traffic. PR#1723
Configuration name
Default
Behavior
infinite_tracing.batching
true
If true (the default), data sent to the Trace Observer will be batched instead of each span being sent individually
infinite_tracing.compression_level
high
Configure the compression level for data sent to the Trace Observer. May be one of [none
Add Support for Padrino 0.15.2 and Sinatra 3
We've added testing to confirm Padrino 0.15.2 and Sinatra 3 are compatible with the Ruby agent. Thank you @nesquena for letting us know 0.15.2 was ready! PR#1712
v8.14.0
Version 8.14.0 of the agent restores desired Capistrano-based changelog lookup functionality when a deployment is performed, speeds up GUID generation, delivers support for instrumenting Rails custom event notifications, fixes potential compatibility issues with the RedisClient gem, and fixes bugs related to initialization in Rails.
The New Relic Ruby agent offers a Capistrano recipe for recording app deployments. The recipe code was significantly cleaned up with PR#1498 which inadvertently changed the way the recipe handles the changelog for a deployment. Community member @arthurwozniak spotted and corrected this change in order to restore the desired changelog lookup functionality while retaining all of the previous cleanup. Thank you very much for your contribution, @arthurwozniak! PR#1653
Speed up GUID generation
The agent leverages random numbers in its GUID (globally unique identifier) generation and would previously always freshly calculate the result of 16^16 or 32^32 before generating a random number. Given that those 16^16 and 32^32 operations are expected, it makes sense to calculate their results up front and store them in constants to be referred to later. Doing so has resulted in a performance gain for the generation of GUIDs. Many thanks to @tungmq for contributing this optimisation and the benchmarks to support it! PR#1693
Support for Rails ActiveSupport::Notifications for custom events
When the new active_support_custom_events_names configuration parameter is set equal to an array of custom event names to subscribe to, the agent will now subscribe to each of the names specified and report instrumentation for the events when they take place. Creating custom events is simple and now reporting instrumentation for them to New Relic is simple as well. PR#1659
Bugfix: Support older versions of the RedisClient gem, handle unknown Redis database index
With version 8.13.0 of the agent, support was added for the redis-rb gem v5+ and the new RedisClient gem. With versions of RedisClient older than v0.11, the agent could cause the monitored application to crash when attempting to determine the Redis database index. Version 8.14.0 adds two related improvements. Firstly, support for RedisClient versions older than v0.11 has been added to get at the database index value. Secondly, the agent will no longer crash or impact the monitored application in the event that the database index cannot be obtained. Thank you very much to our community members @mbsmartee and @patatepartie for bringing this issue to our attention, for helping us determine how to best reproduce it, and for testing out the update. We appreciate your help! Issue#1650PR#1673
Bugfix: Defer agent startup in Rails until after application-defined initializers have run
... (truncated)
Commits
55eeae8 Merge pull request #1736 from newrelic/ci_updates_cache_and_jruby
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)
Coverage: 78.42%. Remained the same when pulling 9cd1b93854512a5cba809a38b9fcff217ab46ed2 on dependabot/bundler/newrelic_rpm-8.15.0 into e94449ec7d5c8ea0d2a393231982a7d49231f89d on master.
Bumps newrelic_rpm from 8.10.1 to 8.15.0.
Release notes
Sourced from newrelic_rpm's releases.
... (truncated)
Changelog
Sourced from newrelic_rpm's changelog.
... (truncated)
Commits
55eeae8
Merge pull request #1736 from newrelic/ci_updates_cache_and_jruby2173dd6
tests depend on rubocopbbbc6d8
chmod +x retry_command scriptbd1c848
Merge pull request #1735 from newrelic/update-default-source-815d034a83
Merge pull request #1734 from newrelic/changelog-overview4fa9aa4
Merge pull request #1738 from newrelic/longhand6222f95
8T: enable batching in default_source.rb as well6055d8b
remove jruby job from slack check69b3d5d
add cops we already took care ofd918995
dont automatically enable new rubocopsDependabot 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)