Repository navigation
Update dependency newrelic_rpm to v10.9.1 - #2759
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
10.4.0→10.9.1Release Notes
newrelic/newrelic-ruby-agent (newrelic_rpm)
v10.9.1Compare Source
Bugfix: Action Controller instrumentation no longer errors when it can't identify the controller class
When the agent could not identify a request's controller class, it logged
TypeError: no implicit conversion of nil into Stringand thenNoMethodError: undefined method 'finish' for nil, and recorded no data for that request. These transactions are now namedController/(unknown)/<action>and recorded normally. PR#3691Bugfix: Prevent
Parallelworkers from hanging when reporting large payloadsWhen
parallelinstrumentation was enabled,Parallel.each/Parallel.mapwithin_processes:could hang forever. Each worker inherited the pipe write ends the agent registered for its earlier siblings, so those pipes couldn't reach end-of-file, and the agent's pipe listener thread blocked waiting on one of them. Any worker whose data exceeded the operating system pipe buffer then blocked on exit. Now, the agent closes each pipe's write end in the parent right after forking, and the listener no longer blocks on a single pipe while others still have data waiting. Thank you to @yayamochi for reporting this bug. Issue#3680 PR#3688Bugfix: gRPC calls no longer fail on requests from Synthetics monitors
When a request from a Synthetics monitor made a gRPC call, the agent added
X-NewRelic-Syntheticsto the call's metadata. gRPC only allows lowercase metadata keys, so the call raisedArgumentError: 'X-NewRelic-Synthetics' is an invalid header key. The agent now sends the synthetics headers in lowercase. gRPC server transactions also now read the synthetics headers from incoming metadata, so a gRPC service called during a Synthetics check records its trace and Synthetics attributes. PR#3693v10.9.0Compare Source
Feature: Continuous Profiling (preview)
Continuous Profiling is a new feature which is not yet generally available for use. The agent-side component code is now present in the agent but to actually use it ahead of the General Availability release, you will need to contact your New Relic sales representative to join the preview early.
Continuous Profiling repeatedly samples the Ruby call stacks of your running application and reports them to New Relic, so you can see which methods are consuming the most CPU time (or allocating the most objects) in production, without adding code to your app.
To turn it on, add the
stackprofandgoogle-protobufgems to your application'sGemfile, then setprofiling.enabledtotrue:With only
profiling.enabledset, the agent samples CPU time every 10 milliseconds for the life of the process. These options let you tune that behavior:falsetrue, the agent collects and reports continuous profiling data.cpucpufor CPU time, orobjectfor object allocations.0.01profiling.includeiscpu. Must be between 0.000001 and 0.999999.10000profiling.includeisobject. Must be between 1000 and 999999.00starts immediately.00profiles until the process exits.PR#3617
Feature: Add support for Dalli 5.1.1
Dalli 5.1.1 added arguments to some of the methods the agent instruments, which could raise an
ArgumentErroron multi-key operations or cause request options to be silently dropped. Now, the agent accepts and forwards a variable number of positional and keyword arguments for these methods. PR#3683v10.8.0Compare Source
Feature: Report a unique hostname for Google Cloud Run Worker Pools and Jobs
The Cloud Run hostname support added in PR#3609 detected Cloud Run by looking for
K_REVISION, which Cloud Run Services set. The agent now also recognizesCLOUD_RUN_REVISION(Worker Pools) andCLOUD_RUN_EXECUTION(Jobs), soutilization.gcp_cloud_run.use_instance_as_hostapplies to all three resource types. Whenutilization.gcp_cloud_run.include_revision_in_hostistrue, the hostname uses whichever of those variables is set, for example{CLOUD_RUN_EXECUTION}-{instance id}on a Job. Issue#3651 Thanks to @choznerol for contributing this enhancement! PR#3652Feature: Add
browser_monitoring.versionconfiguration optionCustomers can now pin the exact browser agent loader version New Relic injects by setting the new
browser_monitoring.versionconfiguration option. See the browser agent EOL policy for which versions are currently available and supported.Feature: Add span.kind to background job libraries
Now, the
span.kindattribute will be added toproduceandconsumeoperations from background job libraries. This includes ActiveJob, Sidekiq, Resque and DelayedJob. PR#3636Bugfix: DelayedJob instrumentation no longer reinstalls itself on every worker under prepend mode
When DelayedJob instrumentation is installed via prepend (the default), creating more than one
Delayed::Workerin the same process caused the agent to log "Installing DelayedJob instrumentation" and reinitialize the plugin again for each additional worker. This was harmless but noisy; it's now only done once per process, matching the existing chain-instrumentation behavior. PR#3654Bugfix: Allowlisted configuration values are no longer case sensitive
Configuration options that validate against an allowlist now match values regardless of case. For example, setting
slow_sql.record_sqltoOBFUSCATEDorObFuScAtEdis now treated the same asobfuscated. Previously, a value with unexpected casing that wasn't an exact match would silently fall back to the default. PR#3645Bugfix: Puma instrumentation works when Puma is lazy-loaded
With
gem "puma", require: false, Puma was not yet loaded when the agent's dependency check ran, so Puma instrumentation would fail to install. The agent now recognizesPuma::RackHandleras evidence that Puma is present, fixing this issue. Thank you @jdelStrother for finding this issue and providing a solution! PR#3650v10.7.1Compare Source
Bugfix: Resolve ArgumentError on multi-key operations with Dalli 5.1.0
This fix updates Dalli instrumentation to accept and forward optional request options arguments in multi and pipelined operations. Our thanks go to @dbackeus for contributing a fix! PR#3642
Bugfix: Async::HTTP requests no longer raise
NoMethodErrorwhen a segment fails to startIf the agent encountered an internal error while creating the segment for an
Async::HTTPrequest, the instrumentation went on to use that missing segment and could raise aNoMethodError. This is now fixed, thanks to @ydah. PR#3640v10.7.0Compare Source
Feature: Add transaction_tracer.cap_segment_artifacts configuration option
Long-running transactions with many segments can cause continuously increasing memory usage for the lifetime of the transaction. The agent now offers an opt-in
transaction_tracer.cap_segment_artifactsconfiguration option (defaults tofalse). When enabled, oncetransaction_tracer.limit_segmentsis reached, the agent also stops recording exclusive time for any segments created afterward in that transaction, reducing memory usage at the cost of less accurate timing data for the transaction.PR#3615Feature: Add Puma server-statistics instrumentation
The agent now samples Puma's cluster-wide server statistics and reports them as
Ruby/Puma/*timeslice metrics, includingbacklog,running,pool_capacity,max_threads, andrequests_count. Statistics are sampled in single mode and in clustered mode whenpreload_app!is enabled. This instrumentation is disabled by default; enable it by settingdisable_puma_instrumentationtofalse. When enabled, the agent starts a reporting thread in the Puma master process to deliver these metrics, which runs an additional agent connection alongside the Puma workers. The sampling interval is configurable via the newpuma.sample_ratesetting (default 60 seconds). Requires Puma 6.6 or later. See our docs for more information.Thanks so much to @ashleyboehs contributing this new feature. PR#3578
Feature: Report a unique hostname for Google Cloud Run instances
The agent now detects Cloud Run and reports the GCP instance id as the hostname so individual instances can be distinguished. Before this change, all Google Cloud Run hostnames were
localhost. This feature is controlled by the newutilization.gcp_cloud_run.use_instance_as_hostconfiguration option (defaulttrue). Setutilization.gcp_cloud_run.include_revision_in_host(defaultfalse) totrueto report the hostname as{K_REVISION}-{instance id}instead, whereK_REVISIONis the Cloud Run revision name. Thank you to @kawa-onushi for suggesting this improvement. Issue#3295 PR#3609Bugfix: Slow SQL no longer recorded after transaction_tracer.limit_segments exceeded
Once a transaction exceeded
transaction_tracer.limit_segments, datastore segments created afterward still could have their slow SQL recorded. The agent now stops recording slow SQL for any segment created after the limit is reached. PR#3615Bugfix: Explain plans could target the wrong database in multi-database Rails apps (Rails >= 7.2)
On Rails 7.2+, the agent gathered explain plans using a connection from the app's default/shared pool rather than a dedicated one. This primarily affected multi-database apps. Explain plans could be generated against the wrong database, and a failed explain could leave a shared connection in a bad state, affecting unrelated requests. The agent now uses its own dedicated connection for explain plans, as it did before Rails 7.2, and resets or discards that connection whenever an explain attempt fails, so a bad connection is never reused. Thank you, @masiafrest for the detailed report! Issue#3610 PR#3612
Bugfix: Browser monitoring instrumentation no longer fails with
FrozenErrorWhen a response body's first fragment was a frozen
Stringand there were multiple fragments, browser instrumentation hit aFrozenErrorand the browser timing header was never injected. This began appearing withERB6.0.3+, which started freezing more of its compiled strings. This issue is now fixed. Thank you to @md5 for reporting this issue! Issue#3624PR#3625Bugfix: Normalize boolean configuration values to allow all casing
In version 9.x, the agent accepted capitalized boolean values, like "FALSE", and mixed-case values like "True". Version 10.0.0 included PR#3341, which unintentionally removed the case-insensitive requirement. This caused users who had any casing besides all lowercase to have their configuration options fall back to the defaults. Now, the agent uses case-insensitive checks again. Our thanks go to @willie for bringing this to our attention. Issue#3632 PR#3633
v10.6.0Compare Source
Feature: SpanLink events are now supported for the Hybrid Agent
Spans created by an OpenTelemetry API can now have Span Links associated with them. Links can be added on a span's start, by passing them to the
linksargument, or by calling theOpenTelemetry::Trace::Span#add_linkAPI. PR#3586Feature: SpanEvent events are now supported for the Hybrid Agent
Spans created by an OpenTelemetry API can now have SpanEvent events associated with them via the
OpenTelemetry::Trace::Span#add_eventAPI. SpanEvent events capture timestamped annotations on a span and are sent to New Relic alongside the parent span. PR#3587Feature: Set Span Kind on all Hybrid Agent spans
Previously, only OpenTelemetry spans translated into external request segments or datastore segments added span kind as an attribute. Now, the agent adds span kind to all OpenTelemetry spans where the value is available. PR#3589
Feature: Add support for OpenTelemetry::Tracer#start_root_span
The
OpenTelemetry::Tracer#start_root_spanAPI can now be used to force a transaction to start for a given span, provided it has a:serveror:consumerspan kind. For any other span kinds, it will no-op. This method is most commonly used in background job instrumentation. PR#3588Bugfix: Fix
instrumentation.rails_event_logger: falsenot disabling the instrumentationSetting
instrumentation.rails_event_loggertofalsewas not disabling the Rails.event instrumentation as expected. The instrumentation would still be installed during Rails boot. This has been fixed. PR#3564Bugfix: Normalize boolean-like values to
disabledfor instrumentation config keysSetting any
instrumentation.*config key tofalse,no, oroffinstead ofdisabledwill now resolve todisabledand prevent the instrumentation from being installed. PR#3579Bugfix: Per-library logging supportability metrics now reflect each library's instrumentation state
The
Supportability/Logging/Ruby/{library}/{enabled|disabled}metrics previously echoedapplication_logging.enabledfor every library, so disabling a single logging instrumentation or running without one of its gems still reportedenabled. Each library now reports based on its own instrumentation state. PR#3571v10.5.0Compare Source
Feature: Add Dalli 5.0 support and fix meta protocol instrumentation
The agent now supports Dalli 5.0+, which removed
Dalli::Protocol::Binaryin favor of the meta protocol exclusively. For Dalli 3.2.0+,pipelined_getinstrumentation now correctly targetsDalli::Protocol::Base(where the method is defined) rather thanDalli::Protocol::Binary, fixing a gap whereget_multicalls went uninstrumented when using the meta protocol. For Dalli 5.0+, the agent additionally instrumentsDalli::Protocol::Meta#read_multi_req, which is invoked by Dalli's single-serverget_multioptimization. PR#3541Feature: Add active_record_use_table_name configuration option
A new configuration option,
active_record_use_table_name, uses an Active Record model's table name instead of its class name when naming metrics, spans, and transaction trace segments. This can particularly be helpful to reduce cardinality in applications using single-table inheritance. The option defaults tofalseto preserve existing behavior. PR#3540Feature: Partially redact license keys in agent logs
Previously, the agent would fully redact New Relic license keys in agent logs. Now, the first 10 characters are visible while the rest are replaced with
*. This preserves enough to troubleshoot region-related issues without exposing the secret portion of the key. PR#3547Bugfix: Fix Semantic Logger instrumentation incompatibility with
rails_semantic_loggerPreviously, an
ArgumentErrorwould be raised when an exception reachedActionDispatch::DebugExceptionswhile usingrails_semantic_logger. This has been fixed. Thank you to @jdelStrother for reporting this! PR#3548Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.