Fixed an issue with Error tracing
Previously the agent could sometimes cause issues with user serialization of error Âobjects after they passed through the error tracing code.
MongoDB cursor count method is now instrumented
countmethod on MongoDB cursors is now instrumented. Previously, count would not be included in transaction traces.
Fixed a typo in NEWS.md
Previously the release notes for v1.19.1 were included as notes for 1.19.0. This has now fixed thanks to @bruun
Fixed a bug in native ES6 Promise instrumentation.
Previously the Promise instrumentation would cause
instanceof Promiseto return false even if the object was a promise. This also caused an incompatibility with async-listener.
instanceofchecks will now work on both the wrapped and unwrapped Promise object.
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.
Fixed a bug with error handling.
Previously the agent could crash applications in certain situations where
nullwas thrown rather than an
Fixed a bug in environment variable based configuration.
Previously the agent would parse the
NEW_RELIC_APDEXenvironment 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.
Fixed an inverted
ifin 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.nextTickinstrumentation 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.nextTickwas changed to pass any additional arguments to the callback, the same way
setImmediatedoes. This change ensures all arguments are handled as expected.
Wrapped all our calls to
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
globalare 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
Names assigned to errors via
Error.namenow appear in the UI.
Previously, the name of an error in the UI appeared as
Error.constructor.nameor with a default of
Error. Now the common pattern of
Error.nameis 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.
request_uriattribute on errors will now only include the path without any parameters.
This behavior now matches the other New Relic agents.
Reduce agent CPU overhead by omitting
The change to
setImmediatemakes that function behave the same way as
nextTickand 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.