Importante
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.14.0
Version 9.14.0 adds Apache Kafka instrumentation for the rdkafka and ruby-kafka gems, introduces a configuration-based, automatic way to add custom instrumentation method tracers, correctly captures MIME type for ActionDispatch 7.0+ requests, properly handles Boolean coercion for newrelic.yml configuration, fixes a JRuby bug in the configuration manager, fixes a bug related to Bundler.rubygems.installed_specs, and fixes a bug to make the agent compatible with ViewComponent v3.15.0+.
Feature: Add Apache Kafka instrumentation for the rdkafka and ruby-kafka gems
The agent now has instrumentation for both the rdkafka and ruby-kafka gems. The agent will record transactions and message broker segments for produce and consume calls made using these gems. PR#2824 PR#2842
Feature: Add a configuration option to permit custom method tracers to be defined automatically
A new
:automatic_custom_instrumentation_method_listconfiguration parameter has been added to permit the user to define a list of fully qualified (namespaced) Ruby methods for the agent to automatically add custom instrumentation for without requiring any code modifications to be made to the classes that define the methods.The list should be an array of
CLASS#METHOD(for instance methods) and/orCLASS.METHOD(for class methods) strings.Use fully qualified class names (using the
::delimiter) that include any module or class namespacing.Here is some Ruby source code that defines a
render_pnginstance method for anImageclass and anotifyclass method for aUserclass, both within aMyCompanymodule namespace:module MyCompanyclass Imagedef render_png# code to render a PNGendendclass Userdef self.notify# code to notify usersendendendGiven that source code, the
newrelic.ymlconfig file might request instrumentation for both of these methods like so:automatic_custom_instrumentation_method_list:- MyCompany::Image#render_png- MyCompany::User.notifyThat configuration example uses YAML array syntax to specify both methods. Alternatively, a comma-delimited string can be used instead:
automatic_custom_instrumentation_method_list: 'MyCompany::Image#render_png, MyCompany::User.notify'Whitespace around the comma(s) in the list is optional. When configuring the agent with a list of methods via the
NEW_RELIC_AUTOMATIC_CUSTOM_INSTRUMENTATION_METHOD_LISTenvironment variable, this comma-delimited string format should be used:export NEW_RELIC_AUTOMATIC_CUSTOM_INSTRUMENTATION_METHOD_LIST='MyCompany::Image#render_png, MyCompany::User.notify'Feature: Collect just MIME type for ActionDispatch 7.0+ requests
Rails 7.0 introduced changes to the behavior of
ActionDispatch::Request#content_type, adding extra request-related details the agent wasn't expecting to collect. Additionally, the agent's use ofcontent_typewas triggering deprecation warnings. The agent now usesActionDispatch::Request#media_typeto capture the MIME type. Thanks to @internethostage for letting us know about this change. Issue#2500 PR#2855Bugfix: Corrected Boolean coercion for
newrelic.ymlconfigurationPreviously, any String assigned to New Relic configurations expecting a Boolean value were evaluated as
true. This could lead to unexpected behavior. For example, settingapplication_logging.enabled: 'false'innewrelic.ymlwould incorrectly evaluate toapplication_logging.enabled: truedue to the truthy nature of Strings.Now, the agent strictly interprets Boolean configuration values. It recognizes both actual Boolean values and certain Strings/Symbols:
'true','yes', or'on'(evaluates totrue)'false','no', or'off'(evaluates tofalse)
Any other inputs will revert to the setting's default configuration value. PR#2847
Bugfix: JRuby not saving configuration values correctly in configuration manager
Previously, a change made to fix a different JRuby bug caused the agent to not save configuration values correctly in the configuration manager when running on JRuby. This has been fixed. PR#2848
Bugfix: Update condition to verify Bundler.rubygems.installed_specs is available
To address a recent Bundler deprecation warning, we started using
Bundler.rubygems.installed_specsinstead ofBundler.rubygems.all_specsin environments that seemed appropriate. We discovered the version constraint we used was too low. Now, rather than check the version, we check for the method usingrespond_to?. PR#2853Bugfix: Support view_component v3.15.0+
Previously the agent had been making use of a private API to obtain a component identifier value. This private API was dropped in v3.15.0 of view_component, resulting in errors from the New Relic Ruby agent's continued attempts to use it. Many thanks to community member @navidemad for bringing this issue to our attention and supplying a bugfix with PR#2870.
Importante
Recomendamos atualizar para a versão mais recente do agente assim que estiver disponível. Se você não puder atualizar para a versão mais recente, atualize seu agente para uma versão com no máximo 90 dias. Saiba mais sobre como manter o agente atualizado.
Consulte a New Relic Ruby política de fim de vida útil do agente para obter informações sobre lançamentos de agentes e datas de suporte.
v9.13.0
A versão 9.13.0 aprimora o suporte para funções do AWS Lambda, adiciona instrumentação experimental do OpenSearch, atualiza a detecção de framework, silencia um aviso de descontinuação do Bundler, corrige a detecção do despachante do Falcon, corrige um bug com a instalação da instrumentação do Redis e resolve um problema de simultaneidade específico do JRuby.
- Recurso: aprimorar a instrumentação da função do AWS Lambda
Quando utilizado por meio da mais recente camada Ruby do New Relic para AWS Lambda, o agente agora oferece suporte aprimorado para a instrumentação da função do AWS Lambda.
A instrumentação do agente para funções do AWS Lambda agora oferece suporte a distributed tracing.
As invocações acionadas pela web agora são identificadas como sendo baseadas na "web" quando uma chamada do API Gateway está envolvida, com suporte para as versões 1.0 e 2.0 do API Gateway.
As chamadas baseadas na web têm o método HTTP, o URI e o código de status registrados.
O agente agora reconhece e informa sobre 12 recursos distintos da AWS que são capazes de acionar a invocação de uma função do Lambda: ALB, API Gateway V1, API Gateway V2, CloudFront, CloudWatch Scheduler, DynamoStreams, Firehose, Kinesis, S3, SES, SNS e SQS.
O tipo do recurso acionador e seu ARN serão registrados para cada recurso e, para muitos deles, atributos extras específicos do recurso também serão registrados. Por exemplo, invocações da função do Lambda acionadas pela atividade do bucket do S3 agora resultarão no registro do nome do bucket do S3. PR#2811
Recurso: adicionar instrumentação experimental do OpenSearch
O agente agora instrumentará automaticamente a gem
opensearch-ruby. Estamos marcando esta instrumentação como experimental porque é necessário mais trabalho para testá-la totalmente. A instrumentação do OpenSearch fornece telemetria semelhante à do Elasticsearch. Agradecemos a @Earlopain por relatar o problema e a @praveen-ks por um rascunho inicial da instrumentação. Issue n.º 2228 PR n.º 2796Recurso: melhorar a precisão de detecção de framework para Grape e Padrino
Anteriormente, os aplicativos que usavam o framework Grape definiam
rubycomo seu framework no Relatório de Ambiente. Agora, os aplicativos Grape serão definidos comogrape. Da mesma forma, os aplicativos que usam o framework Padrino seriam definidos comosinatra. Agora, eles serão definidos comopadrino. Isso ajudará nas verificações de compatibilidade do agente de segurança do New Relic. Agradecemos a @prateeksen por fazer essa alteração. Issue#2777 PR#2789Recurso: silenciar o aviso de descontinuação do Bundler
all_specsBundler.rubygems.all_specsfoi descontinuado em favor deBundler.rubygems.installed_specsnas versões 2+ do Bundler, fazendo com que o agente emitisse avisos de descontinuação. O método foi atualizado quando o Bundler 2+ é detectado e os avisos agora são silenciados. Agradecemos a @jcoyne por relatar este problema. Issue#2733 PR#2823Correção de bug: corrigir a detecção do dispatcher do Falcon
Anteriormente, tentamos usar o espaço de objetos para determinar se o servidor web Falcon estava em uso. No entanto, o Falcon não é adicionado ao espaço de objetos até que o relatório de ambiente seja gerado, resultando em um dispatcher
nil. Agora, revertemos para uma estratégia anterior que descobria o dispatcher usandoFile.basename. Agradecemos a @prateeksen por relatar este problema e investigar a questão. Issue#2778 PR#2795Correção de bug: correção de um erro de instrumentação do Redis quando Redis::Cluster::Client está presente
A instrumentação do Redis continha anteriormente um bug que causava um erro quando
Redis::Cluster::Clientestava presente, devido ao uso de umreturndo Ruby fora de um método. Agradecemos muito ao @jdelStrother não apenas por relatar este bug, mas também por nos indicar a causa raiz. Issue#2814 PR#2816Correção de bug: Resolver problema de concorrência do JRuby com o acesso à configuração de aplicar hash
A classe de configuração interna do agente mantém um hash que ocasionalmente é reconstruído. Durante a reconstrução, certos valores de instrumentação previamente determinados de forma dinâmica são preservados para o benefício do agente de segurança New Relic Ruby. Após relatos de clientes do JRuby sobre problemas de concorrência relacionados ao hash sendo acessado enquanto era modificado, duas correções separadas foram incluídas na lógica de reconstrução do hash anteriormente: uma operação
Hash#dupe um blocosynchronize do. Mas erros ainda foram relatados. Nós mesmos continuamos incapazes de reproduzir esses erros de concorrência, apesar de usarmos exatamente as mesmas versões do JRuby e de todos os softwares relatados. Após confirmar que o código de acesso ao hash em questão é necessário apenas para o agente de segurança Ruby (que opera apenas em ambientes dedicados de testes de segurança de não produção), introduzimos uma nova correção para clientes do JRuby que simplesmente ignorará o código problemático quando o JRuby estiver em uso, mas o agente de segurança não. PR#2798
Importante
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.12.0
Version 9.12.0 adds support for the newrelic_security agent, introduces instrumentation for the LogStasher gem, improves instrumentation for the redis-clustering gem, and updates the Elasticsearch instrumentation to only attempt to get the cluster name once per client, even if it fails.
Feature: Add support for the newrelic_security agent
New Relic Interactive Application Security Testing (IAST) can help you prevent cyberattacks and breaches on your applications by probing your running code for exploitable vulnerabilities.
The
newrelic_securitygem provides this feature for Ruby. It depends onnewrelic_rpm. This is the first version ofnewrelic_rpmcompatible withnewrelic_security.At this time, the security agent is intended for use only within a dedicated security testing environment with data that can tolerate modification or deletion. The security agent is available as a separate Ruby gem,
newrelic_security. It is recommended that this separate gem only be introduced to a security testing environment by leveraging Bundler grouping like so:# Gemfilegem 'newrelic_rpm' # New Relic APM observability agentgem 'newrelic-infinite_tracing' # New Relic Infinite Tracinggroup :security dogem 'newrelic_security', require: false # New Relic security agentendIn order to run the security agent, you need to update your configuration. At a minimum,
security.agent.enabledandsecurity.enabledmust be set totrue. They arefalseby default. Similar to the gem installation, we recommend you set these configurations for a special security testing environment only.Here's an example using
newrelic.yml:common: &default_settingslicense_key: <%= ENV['NEW_RELIC_LICENSE_KEY'] %>app_name: "Example app"development:<<: *default_settingsapp_name: <%= app_name %> (Development)security:<<: *default_settingssecurity.enabled: truesecurity.agent.enabled: trueproduction:<<: *default_settingsThe following configuration relate to the
newrelic_securitygem:Configuration name Default Behavior security.agent.enabled falseIf true, the security agent is loaded (a Ruby 'require' is performed)security.enabled falseIf true, the security agent is started (the agent runs in its event loop)security.mode 'IAST'Defines the mode for the security agent to operate in. Currently only 'IAST' is supported security.validator_service_url 'wss://csec.nr-data.net'Defines the endpoint URL for posting security related data security.detection.rci.enabled trueIf true, enables RCI (remote code injection) detectionsecurity.detection.rxss.enabled trueIf true, enables RXSS (reflected cross-site scripting) detectionsecurity.detection.deserialization.enabled trueIf true, enables deserialization detectionsecurity.application_info.port nilAn Integer representing the port the application is listening on. This setting is mandatory for Passenger servers. Other servers should be detected by default. Feature: Add instrumentation for LogStasher
The agent will now record logs generated by LogStasher. Versions 1.0.0 and above of the LogStasher gem are supported. PR#2559
Feature: Add instrumentation for redis-clustering
Version 5.x of the
redisgem moved cluster behavior into a different gem,redis-clustering. This gem can access instrumentation registered throughRedisClient::Middleware. Previously, the agent only instrumented thecall_pipelinedmethod through this approach, but now users of theredis-clusteringgem will also have instrumentation registered forconnectandcallmethods. In addition, the way thedatabase_nameattribute is set for Redis datastore spans is now compatible with all versions of Redis supported by the New Relic Ruby agent. Thank you, @praveen-ks for bringing this to our attention. Issue#2444 PR#2720Bugfix: Update Elasticsearch instrumentation to only attempt to get the cluster name once per client
Previously, the agent would attempt to get the cluster name every time a call was made if it was not already captured. This could lead to a large number of failures if the cluster name could not be retrieved. Now, the agent will only attempt to get the cluster name once per client, even if it fails. Thank you, @ascoppa for bringing this to our attention. Issue#2730 PR#2743
Feature: Produce metrics for 4 additional Action Controller Rails notifications
Four additional Action Controller related Rails notifications are now subscribed to by the agent to produce telemetry. These 4 are
exist_fragment?,expire_fragment,read_fragment, andwrite_fragment. As with instrumentation for Action Controller itself, these notifications are enabled by default and can be disabled by setting:disable_action_controllertotruein the agent'snewrelic.ymlconfiguration file. PR#2745
Importante
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.11.0
Version 9.11.0 introduces instrumentation for the aws-sdk-sqs gem, fixes a bug related to expected errors not bearing a "true" value for the "expected" attribute if expected as a result of an HTTP status code match and changes the way Stripe instrumentation metrics are named to prevent high-cardinality issues.
Feature: Add instrumentation for SQS
The agent has added instrumentation for the aws-sdk-sqs gem. The agent will now record message broker spans for SQS client calls made with the aws-sdk-sqs gem. PR#2679
Bugfix: HTTP status code based expected errors will now have an "expected" value of "true"
Previously when an error was treated as expected by the agent as a result of a matching HTTP status code being found in the :'error_collector.expected_status_codes' configuration setting, the error would not appear with an "expected" attribute value of "true" in the errors in the errors inbox. PR#2710
Bugfix: Stripe metric names will no longer include full request paths to limit the unique name count
The Stripe instrumentation introduced in agent version v9.5.0 produced instrumentation metric names that used the full Stripe request path. For any significant Stripe usage, this could quickly lead to very large number of distinct metric names. Now only the API version and the category part of the request path are included in the metric name which still includes the "Stripe" opener and method (ex: "get") closer. Thanks to @jdelStrother and @jsneedles for bringing this issue to our attention and providing terrific information explaining the problem and potential paths to resolution. PR#2716
Importante
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.10.2
Version 9.10.2 fixes a bug related to the new DynamoDB instrumentation and removes Rails::Command::RakeCommand from the default list of denylisted constants.
Bugfix: DynamoDB instrumentation logging errors when trying to get account_id
When trying to access data needed to add the
account_idto the DynamoDB span, the agent encountered an error when certain credentials classes were used. This has been fixed. Thanks to @kichik for bringing this to our attention. PR#2864Bugfix: Remove
Rails::Command::RakeCommandfrom the default list ofautostart.denylisted_constantsThe default value for the
autostart.denylisted_constantsconfiguration was changed in 9.10.0 to includeRails::Command::RunnerCommandandRails::Command::RakeCommand. The inclusion ofRails::Command::RakeCommandprevented the agent from starting automatically when Solid Queue was started usingbin/rails solid_queue:start. We recognize there are many commands nested withinRails::Command::RakeCommandand have decided to remove it from the default list. We encourage users who do not want the agent to run onRails::Command::RakeCommandto add the constant to their configuration. This can be accomplished by adding the following to yournewrelic.ymlfile:autostart.denylisted_constants: "Rails::Command::ConsoleCommand,Rails::Command::CredentialsCommand,Rails::Command::Db::System::ChangeCommand,Rails::Command::DbConsoleCommand,Rails::Command::DestroyCommand,Rails::Command::DevCommand,Rails::Command::EncryptedCommand,Rails::Command::GenerateCommand,Rails::Command::InitializersCommand,Rails::Command::NotesCommand,Rails::Command::RakeCommand,Rails::Command::RoutesCommand,Rails::Command::RunnerCommand,Rails::Command::SecretsCommand,Rails::Console,Rails::DBConsole"Thank you, @edariedl, for reporting this issue. Issue#2677 PR#2694
Importante
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.10.1
- Bugfix: Incompatibility with Bootstrap
Version 9.10.1 fixes an incompatibility between the agent and the Bootstrap gem caused by agent v9.10.0's introduction of a lib/bootstrap.rb file. Thank you to @dorner for reporting the bug and identifying the 'bootstrap' name collision as the root cause. BUG#2675 PR#2676
Importante
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.10.0
Version 9.10.0 introduces instrumentation for DynamoDB, adds a new feature to automatically apply nonces from the Rails content security policy, fixes a bug that would cause an expected error to negatively impact a transaction's Apdex, and fixes the agent's autostart logic so that by default rails runner and rails db commands will not cause the agent to start.
Feature: Add instrumentation for DynamoDB
The agent has added instrumentation for the aws-sdk-dynamodb gem. The agent will now record datastore spans for DynamoDB client calls made with the aws-sdk-dynamodb gem. PR#2642
Feature: Automatically apply nonces from the Rails content security policy
To auto-inject browser monitoring with the New Relic Ruby agent, you either need to set your content security policy to 'unsafe-inline' or provide a nonce. Previously, the only way to provide a nonce was by using the
NewRelic::Agent.browser_timing_headerAPI. Now, when a Rails application uses the content security policy configuration to add a nonce, the nonce will be automatically applied to the browser agent. A new configuration option,browser_monitoring.content_security_policy_nonce, toggles this feature. It is on by default. Thank you @baldarn for submitting this feature! PR#2544Bugfix: Expected errors related to HTTP status code, class, and message won't impact Apdex
The agent is supposed to prevent observed application errors from negatively impacting Apdex if the errors are either ignored or expected. There are two ways for the agent to expect an error: via the
notice_errorAPI receiving anexpected: trueargument or via matches made against user-configured lists for expected HTTP status codes (:'error_collector.expected_status_codes'), expected error classes (:'error_collector.expected_classes'), or expected error messages (:'error_collector.expected_messages'). Previously, only errors expected via thenotice_errorAPI were correctly prevented from impacting Apdex. Expected errors set by configuration incorrectly impacted Apdex. This behavior has been fixed and now both types of expected errors will correctly not impact Apdex. Thanks very much to @florianpilz for bringing this issue to our attention. PR#2619Bugfix: Do not start the agent automatically when
rails runnerorrails dbcommands are runPR#2239 taught the agent how to recognize
bin/railsbased contexts that it should not automatically start up in. Butbin/rails runnerandbin/rails dbcommands would still see the agent start automatically. Those 2 contexts will now no longer see the agent start automatically. Thank you to @jdelStrother for both bringing thebin/railscontext to our attention and for letting us know about thebin/rails runnerandbin/rails dboutliers that still needed fixing. PR#2623Older agent versions that are still supported by New Relic can update to the new list of denylisted constants by having the following line added to the
newrelic.ymlconfiguration file:autostart.denylisted_constants: "Rails::Command::ConsoleCommand,Rails::Command::CredentialsCommand,Rails::Command::Db::System::ChangeCommand,Rails::Command::DbConsoleCommand,Rails::Command::DestroyCommand,Rails::Command::DevCommand,Rails::Command::EncryptedCommand,Rails::Command::GenerateCommand,Rails::Command::InitializersCommand,Rails::Command::NotesCommand,Rails::Command::RakeCommand,Rails::Command::RoutesCommand,Rails::Command::RunnerCommand,Rails::Command::SecretsCommand,Rails::Console,Rails::DBConsole"
Importante
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.9.0
Version 9.9.0 introduces support for AWS Lambda serverless function observability, adds support for Elasticsearch 8.13.0, and adds the 'request.temperature' attribute to chat completion summaries in ruby-openai instrumentation.
Feature: Serverless Mode for AWS Lambda
The Ruby agent is now capable of operating in a quick and light serverless mode suitable for observing AWS Lambda function invocations. For serverless use, the agent is delivered by a New Relic Lambda layer that can be associated with a Lambda function. All reported data will appear in New Relic's dedicated serverless UI views. Only AWS based Lambda functions are supported for now, though support for other cloud hosted serverless offerings may be added in future depending on Ruby customer demand. The serverless functionality is only intended for use with the official New Relic Ruby layers for Lambda. Any existing workflows that involve the manual use of the Ruby agent in an AWS Lambda context without a New Relic layer should not be impacted.
Feature: Add support for Elasticsearch 8.13.0
Elasticsearch 8.13.0 increased the number of arguments used in the method the agent instruments,
Elastic::Transport::Client#perform_request. Now, the agent supports a variable number of arguments for the instrumented method to prevent futureArgumentErrors.Bugfix: Add 'request.temperature' to ruby-openai chat completion summaries
Previously, the agent was not reporting the
request.temperatureattribute onLlmChatCompletionSummaryevents through ruby-openai instrumentation. We are now reporting this attribute.
Importante
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v9.8.0
Version 9.8.0 introduces instrumentation for ruby-openai, adds the option to store tracer state on the thread-level, hardens the browser agent insertion logic to better proactively anticipate errors, and prevents excpetions from being raised in the Active Support Broadcast logger instrumentation.
Feature: Add instrumentation for ruby-openai
Instrumentation has been added for the ruby-openai gem, supporting versions 3.4.0 and higher (PR#2442). While ruby-openai instrumentation is enabled by default, the configuration option
ai_monitoring.enabledis disabled by default and controls all AI monitoring.ai_monitoring.enabledmust be set totruein order to receive ruby-openai instrumentation. High-Security Mode must be disabled in order to receive AI monitoring.Calls to embedding and chat completion endpoints are automatically traced. These events can be enhanced with the introduction of two new APIs. Custom attributes can also be added to LLM events using the API
NewRelic::Agent.add_custom_attributes, but they must be prefixed withllm.. For example,NewRelic::Agent.add_custom_attributes({'llm.user_id': user_id}).Feature: Add AI monitoring APIs
This version introduces two new APIs that allow users to record additional information on LLM events:
NewRelic::Agent.record_llm_feedback_event- Records user feedback events.NewRelic::Agent.set_llm_token_count_callback- Sets a callback proc for calculatingtoken_countattributes for embedding and chat completion message events.
Visit RubyDoc for more information on each of these APIs.
Feature: Store tracer state on thread-level
A new configuration option,
thread_local_tracer_state, stores New Relic's tracer state on the thread-level, as opposed to the default fiber-level storage. This configuration is turned off by default. Our thanks go to community member @markiz who contributed the idea, code, configuration option, and tests for this new feature! PR#2475.Bugfix: Harden the browser agent insertion logic
With Issue#2462, community member @miry explained that it was possible for an HTTP response headers hash to have symbols for values. Not only would these symbols prevent the inclusion of the New Relic browser agent tag in the response body, but more importantly they would cause an exception that would bubble up to the monitored web application itself. With PR#2465 symbol based values are now supported and all other potential future exceptions are now handled. Additionally, the refactor to support symbols has been shown through benchmarking to give the processing of string and mixed type hashes a slight speed boost too.
Bugfix: Prevent Exception in Active Support Broadcast logger instrumentation
Previously, in certain situations the agent could cause an exception to be raised when attempting to interact with a broadcast log event. This has been fixed. Thanks to @nathan-appere for reporting this issue and providing a fix! PR#2510