New features
Added ioredis instrumentation.
Big thanks to Guilherme Souza (@guilhermef) for the contribution!
Added a new shutdown call to the public API.
Thanks to @echmykhun for the contribution!
The new shutdown API call will gracefully stop the agent. It can optionally harvest any pending data waiting to be sent to the New Relic servers before shutting down.
To read more about this new API, please read our README, or visit our docs page.
Added support for truncated segment notifiers.
Segments related to work that happens after a transaction has finished will now be labeled as Truncated in the UI.
Bug fixes
Fixed an issue in the express instrumentation related to inactive/lost transaction state.
Thanks to Jacob Page (@DullReferenceException) for submitting this fix.
Previously, the agent would crash if there was no active transaction when an Express middleware would handle the request.
Improvements
The agent now uses MongoDB's APM API for its instrumentation.
Method discovery for instrumentation is now done through MongoDB's APM API in newer versions of the MongoDB driver.
New features
Added capturing errors from the unhandledRejection global event.
If a promise is rejected with an error, and the error is not handled, the error will now be reported to New Relic.
Bug fixes
Fixed issue with attaching an event handler every time Express was required.
Fixed issue with chained promises losing context.
Previously the transaction state was getting lost when an error was thrown early in a promise chain.
Fixed issue with the agent crashing when an http Server did not have the address() getter.
Fixed issue with Express instrumentation when a wrapped layer object was missing a method.
Improvements
- Added more logging around the CAT feature.
Notes
Express instrumentation has been fundamentally reworked.
This refactor includes a few bug fixes around error handling and transaction naming, as well as optional higher resolution traces.
Setting feature_flag.express_segments
to true in the agent config will make the agent report the amount of time spent in each individual middleware per request
Fixes
The agent will not report errors handled in an error handler it is monitoring - this is more in line with how the agent does error handling in other contexts.
The agent will now name transactions correctly when an application responds from a middleware.
Fixes
Added instrumentation of Bluebird promises.
Previously, the transaction state could get lost when multiple promises resolved close to each other.
Fixed issue with PostgreSQL native instrumentation.
Previously, calling
require('pg').native
more than once was causing the agent to crash.Fixed issue with hapi instrumentation not returning value from Server.connection().
Various improvements to tests to make them more stable.
New features
Added more HTTP request/response parameters to transactions.
The agent now collects additional request/response HTTP headers (e.g. contentType, HTTP method, response status code). These can be used to filter and group errors in the Error analytics page, as well as events in Insights.
Fixes
- Fixed an issue with collecting errors when an Express error handler removed message and stack properties from the error object.
Fixes
Fixed crashing bug on unhandled rejections in Q.
Previously, the agent would cause the process to crash in the event of an unhandled rejection.
Thanks to @mdlavin for this fix!
Fixes
Added Q instrumentation.
The node agent now accurately records programs using Q for promises.
Thanks to @mdlavin for the contribution!
Added node-mysql2 support.
Thanks to @jhollingworth for adding node-mysql2 support to the agent.
Query streaming in node-mysql now works while using the agent.
Previously, due to the way node-mysql was instrumented query streaming would be forced off when the agent was collecting data. This is no longer the case and query streaming will work and be recorded as expected.
Fixes
Corrected an issue where the agent would sometimes crash looking up the port of the HTTP server that a request came from.
Previously, the agent assumed the HTTP server would always have an address, unfortunately this isn't the case if the HTTP server's
.close()
has been called.
New Features
Added support for the new Response Time Line and better representation of asynchronous data.
This has many implications in the UI. The first is the Application Overview, in the past we've always just shown "node" and maybe "request queueing" on the response time graph. We now show you an application breakdown like our other language agents! This means you'll be able to see how much time was in HTTP externals, your various datastores, or spent in node itself. Overlaid on this will be your response time as a blue line.
Next page that has been affected is our Transaction Overview page. Specifically when you click into a Transaction to see more detail. Previously we showed you a breakdown of the top time consumers in that transaction, both as a graph and as a table. Unfortunately that graph didn't show response time and the table would show percentages over 100%. Now, like the Application Overview, you will get a blue response time line and the breakdown table will have numbers that add up much more intuitively!
Finally, our Transaction Trace view has also been updated. The change is very similar to the changes mentioned above for the breakdown table in the Transaction Overview page. You should no longer see percentages over 100% here either.
Improvements
Transaction trace serialization is now 4x faster than before.
This speedup will primarily affect those with large, deeply nested transactions. Though small transactions have seen some improvement as well.
New features
Error totals are now reported.
The agent now reports metrics that reflect the total number of errors that have occurred in web and background transactions.
Bug fixes
Disabling SSL no longer requires the setting of a port.
Previously, the agent required changing
port
in the config to80
when disabling SSL. The agent will now default to port 80 if a port is not supplied and SSL is turned off.Logging functions have been improved.
The agent will now properly log error stack traces and can rate limit logging messages. To aid in debugging we have provided more logging about the public API.