Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Fixes
- Fix incompatibility with logging gem by renaming NewRelic::Agent::Thread to NewRelic::Agent::AgentThread.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Fixes
- Add queue time support for sinatra apps - Sinatra applications can now take advantage of frontend queue time reporting. Thanks to Winfield Peterson for this contribution. 
- Simplify queue time configuration for nginx 1.2.6+ - Beginning in version 1.2.6, recently released as a development version, the $msec variable can be used to set an http header. This change allows frontend queue time to be tracked in New Relic simply by adding this line to the nginx config: - proxy_set_header X-Queue-Start "t=${msec}000" - It will no longer be necessary to compile a patched version of nginx or compile in the perl or lua module to enable this functionality. - Thanks to Lawrence Pit for the contribution. 
- Report back build number and stage along with version info - In the 3.5.3 series the agent would fail to report its full version number to NewRelic's environment report. For example it would report its version as 3.5.3 instead of 3.5.3.25 or 3.5.3.25.beta. The agent will now report its complete version number as defined in newrelic_rpm.gemspec. 
- The host and the port that the agent reports to can now be set from environment vars - The host can be set with NEW_RELIC_HOST and the port with NEW_RELIC_PORT. These setting will overrride any other settings in your newrelic.yml. 
- Fix RUM reporting to multiple applications - When the agent is configured to report to multiple "roll up" applications RUM did not work correctly. 
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Fixes
- Update the collector protocol to use JSON and Ruby primitives - The communication between the agent and the NewRelic will not longer be marshaled Ruby objects, but rather JSON in the case of Ruby 1.9 and marshaled Ruby primitives in the case of 1.8. This results in greater harvest efficiency as well as feature parity with other New Relic agents. 
- Fix incorrect application of conditions in sinatra instrumentation - The agent's sinatra instrumentation was causing sinatra's condidtions to be incorrectly applied in some obscure cases. The bug was triggered when a condition was present on a lower priority route that would match the current request, except for the presence of a higher priority route. 
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Fixes
- Simplified process of running agent test suite and documented code contribution process in GUIDELINES_FOR_CONTRIBUTING.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Fixes
- Enabling Memory Profiling on Lion and Mountain Lion - The agent's list of supported platforms for memory profiling wasn't correctly checking for more recent versions of OS X. 
- Fixed an arity issue encountered when calling newrelic_notice_error from Rails applications. 
- End user queue time was not being properly reported, works properly now. 
- Server-side configuration for ignoring errors was not being heeded by agent. 
- Better handling of a thread safety issue. - Some issues may remain, which we are working to address, but they should be gracefully handled now, rather than crashing the running app. 
- Use "java_import" rather than "include_class" when require Java Jars into a JRuby app. - Thanks to Jan Habermann for the pull request 
- Replaced alias_method mechanism with super call in DataMapper instrumentation. - Thanks to Michael Rykov for the pull request 
- Fixed the Rubinius GC profiler. - Thanks to Dirkjan Bussink 
- Use ActiveSupport.on_load to load controller instrumentation Rails 3. - Thanks to Jonathan del Strother 
- Reduce the number of thread local reference in a particular high traffic method - Thanks to Jeremy Kemper 
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Fixes
- (performance) Gradual slowdown on Phusion Passenger - This release resolves a performance issue that effected sites running on some versions of Phusion Passenger. The issue manifests as a slow degradation of response time and increased CPU usage. This issue was only present in version 3.5.0 of the agent. 
- Drop support for Passenger versions less than 2.1.1 - In order to implement the above fix we have dropped official support for Passenger versions 2.1.0 and older. These early versions of Passenger do not support an after_fork event which is necessary for the smooth operation of the agent. 
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Fixes
- (Fix) RUM Stops Working After 3.4.2.1 Agent Upgrade - v3.4.2.1 introduced a bug that caused the browser monitor auto instrumentation (for RUM) default to be false. The correct value of true is now used 
- When the Ruby Agent detects Unicorn as the dispatcher it creates an INFO level log message with additional information - To help customers using Unicorn, if the agent detects it (Unicorn) is being used as the dispatcher an INFO level log message it created that includes a link to New Relic online doc that has additional steps that may be required to get performance data reporting. 
- (Fix) In version 3.4.2 of the Ruby Agent the server side value for Apdex T was disgregarded - With version 3.4.2 of the agent, the value set in the newrelic.yml file took precedence over the value set in the New Relic UI. As of version 3.5.0 only the value for Apdex T set in the New Relic UI will be used. Any setting in the yaml file will be ignored. 
- Improved Error Detection/Reporting capabilities for Rails 3 apps - Some errors are missed by the agent's exception reporting handlers because they are generated in the rails stack, outside of the instrumented controller action. A Rack middleware is now included that can detect these errors as they bubble out of the middleware stack. Note that this does not include Routing Errors. 
- The Ruby Agent now logs certain information it receives from the New Relic servers - After connecting to the New Relic servers the agent logs the New Relic URL of the app it is reporting to. 
- GC profiling overhead for Ruby 1.9 reduced - For Ruby 1.9 the amount of time spent in GC profiling has been reduced. 
- Know issue with Ruby 1.8.7-p334, sqlite3-ruby 1.3.0 or older, and resque 1.23.0 - The Ruby Agent will not work in conjunction with Ruby 1.8.7-p334, sqlite3-ruby 1.3.3 or earlier, and resque 1.23.0. Your app will likely stop functioning. This is a known problem with Ruby versions up to 1.8.7-p334. Upgrading to the last release of Ruby 1.8.7 is recommended. This issue has been present in every version of the agent we've tested going back for a year. 
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Fixes
- Fix issue when app_name is nil - If the app_name setting ends up being nil an exception got generated and the application wouldn't run. This would notably occur when running a Heroku app locally without the NEW_RELIC_APP_NAME environment variable set. A nil app_name is now detected and an error logged specifying remediation. 
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Fixes
- Support for Apdex T in server side configuration - For those using server side configuration the Ruby Agent now supports setting the Apdex T value via the New Relic UI. 
- The RUM NRAGENT tk value gets more robustly sanitized to prevent potential XSS vulnerabilities - The code that scrubs the token used in Real User Monitoring has been enhanced to be more robust. 
- Refactoring of agent config code - The code that reads the configuration information and configures the agent got substantially reorganized, consolidated, simplified, and made more robust. 
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Bug Fixes
- Fix edge case in RUM auto instrumentation where X-UA-Compatible meta tag is present but - </head>tag is missing.- There is a somewhat obscure edge case where RUM auto instrumentation will crash a request. The issue seems to be triggered when the X-UA-Compatible meta tag is present and the - </head>tag is missing.
- Fixed reference to - @service.request_timeoutto- @request_timeout in new_relic_service.rb. (Thanks to Matthew Savage)- When a timeout occurred during connection to the collector an "undefined method - request_timeout for nil:NilClass" would get raised.
- preserve visibility on traced methods. - Aliased methods now have the same visibility as the original traced method. A couple of the esoteric methods created in the process weren't getting the visibility set properly. 
- Agent service does not connect to directed shard collector after connecting to proxy - After connecting to collector proxy name of real collector was updated, but ip address was not being updated causing connections to go to the proxy. Agent now looks up ip address for real collector. 
- corrupt marshal data from pipe children crashing agent - If the agent received corrupted data from the Reqsue worker child agent it could crash the agent itself. fixed. 
- should reset RubyBench GC counter between polls - On Ruby REE, the GC profiler does not reset the counter between polls. This is only a problem if GC could happen between transactions, as in, for example, out-of-band GC in Unicorn. fixed.