Bug fixes
Fixed a bug in environment variable based configuration.
Previously the agent would parse the
NEW_RELIC_APDEX
environment variable as a string rather than a float this could cause data to be sent to New Relic servers in an invalid format, preventing the data from being collected.Fixed a bug with the error collector's handling of ignored status codes.
Previously the agent would not properly ignore status codes if the status code was set using a string rather than a number.
Fixed a bug in mysql instrumentation.
Previously the mysql instrumentation could cause errors when making mysql queries using an options object rather than a SQL string. The agent now handles arguments to the query method in a more robust way.
Notes
Fixed an inverted
if
in config loading.Previously, the config loader would log a warning on success, rather than failure. Configuration loading works as expected now.
Fixed a bug in
process.nextTick
instrumentation for io.js 1.8.1.Previously the agent would only pass the callback argument to
process.nextTick
. This did not cause issues in Node.js and older version of io.js, since additional arguments were ignored. In a recent change to io.js,process.nextTick
was changed to pass any additional arguments to the callback, the same waysetImmediate
does. This change ensures all arguments are handled as expected.
Notes
Wrapped all our calls to
JSON.parse
in try/catch.Previously, only calls that were considered unsafe due to external data input were wrapped. We are taking a more defensive stance and wrapping them all now.
Timers attached to
global
are now instrumented correctly in all version of io.js.As of v1.6.3 of io.js, timers are no longer lazily loaded from the timers module, and are placed directly on the global object. The agent now takes this change into account and accurately wraps the timer methods.
Improved handling of cross-application tracing headers.
Paths that include multibyte characters will now show up correctly in cross application maps
Notes
Names assigned to errors via
Error.name
now appear in the UI.Previously, the name of an error in the UI appeared as
Error.constructor.name
or with a default ofError
. Now the common pattern ofError.name
is respected and takes precedence.Child segments of external calls will now be nested correctly.
This change causes segments that make up external calls to nest under the call correctly. Previously, the child segments appeared as siblings to external calls.
The
request_uri
attribute on errors will now only include the path without any parameters.This behavior now matches the other New Relic agents.
Notes
Reduce agent CPU overhead by omitting
setImmediate
from traces.The change to
setImmediate
makes that function behave the same way asnextTick
and other frequently-called functions that are already elided from Transaction Traces.Mitigate a Node.js memory leak that can occur during TLS connections.
There is an outstanding Node.js Core memory leak involving TLS connections. Clients specifying certificates, such as the New Relic Agent, quickly reveal this leak. We now mitigate this issue by using the default client certificates where possible. A new log message will be printed when the TLS memory leak workaround can not be used, such as when using a custom certificate with an HTTPS proxy.
Notes
- Fixed a bug where external requests report times longer than the transactions that initiated them. External request segments are now always ended when an error occurs.
- Fixed a bug that produced incorrect transaction names for some routes in express2 and express3.
Notes
- Fixed a bug that interfered with listing the routes in Express apps.
- Fixed a bug that caused custom transaction names to appear as "unknown".
- Added more log detail when instrumentation fails to load.
Notes
- Added instrumentation support for Node.js PostgreSQL driver pg 4.x.
- Added instrumentation support for Datastax's Cassandra driver.
- Updated Oracle instrumentation to collect new datastore metrics.
Notes
Added instrumentation for modules in Node core.
Added support for native Promises in Node.js 0.12 and io.js 1.x.
Traces will now contain separate segments for async waits and callbacks.
Updated instrumentation for MongoDB to support previously un-instrumented methods for 1.x and 2.x versions of the node-mongodb-native driver.
Fixed a bug in the recording of transaction metrics. Previously this would cause a duplicate of the transaction metric to be displayed in the transaction breakdown chart
Unified view for SQL database and NoSQL datastore products.
The response time charts in the application overview page will now include NoSQL datastores, such as Cassandra and MongoDB,and also the product name of existing SQL databases such as MySQL, Postgres, Oracle, etc. For existing SQL databases, in addition to the existing breakdown of SQL statements and operations, the queries are now also associated with the database product being used. For NoSQL datastores, such as Cassandra and MongoDB, we have now added information about operations performed against those products, similar to what is being done for SQL databases.
This new unified Databases page will enable the filtering of metrics and operations by product, and includes a table listing all operations.
Because this introduces a notable change to how SQL database metrics are collected, it is important that you upgrade the agent version on all hosts. If you are unable to transition to the latest agent version on all hosts at the same time, you can still access old and new metric data for SQL databases, but the information will be split across two separate views.
Notes
- Fixed a bug in the logger to respect the configured log level in all cases.