Notes
Fixed a bug in native ES6 Promise instrumentation.
Previously the Promise instrumentation would cause
instanceof Promise
to return false even if the object was a promise. This also caused an incompatibility with async-listener.instanceof
checks will now work on both the wrapped and unwrapped Promise object.
Features
Filesystem interactions are now recorded in metrics
The time spent in filesystem functions during a transaction will now be displayed in the transaction overview page per operation.
Bugfixes
Fixed a bug with error handling.
Previously the agent could crash applications in certain situations where
null
was thrown rather than anError
object.
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.