Fixed duplicated external transactions for
httpsrequests in Node > 0.10.
Any external transaction that used the
httpsmodule to make the request would appear twice in transaction traces due to
http.request. This has now been resolved.
Updated eslint dev dependency to 2.9.0 (was 0.24.1).
Fixed an issue with transaction naming precedence.
Custom naming of transactions will no longer be replaced by names generated by the instrumentation.
Fixed tests which broke under Node 6.0.
Node 6.0.0 changed some messaging and internal functionality which our tests were asserting on. These tests have been updated to work with either the new version or the older ones.
Fixed installing GCC 5 in Travis for testing native modules in Node >= 3.0.
Starting in Node 3.0, native modules were compiled with C++11 features enabled. The version of GCC preinstalled on Travis was too old to support that so we now manually install GCC 5 and set it as the system compiler.
Fixed metrics that were being scoped to themselves.
Some metrics were scoped to themselves, causing a strange visual glitch in the New Relic UI. This self-scoping has been removed.
Added tests for transaction naming with parallel requests in Express.
This release has been unpublished from npmjs.org. Use version 1.27.1 or higher.
Reworked promise instrumentation to be more reliable and reusable.
Promise instrumentation has been rewritten to be applicable to any A+ compliant promise library. This change brings more consistent instrumentation of Bluebird promises.
This change also allows users to see the execution order of chained promises in their Transaction Traces. This is an opt-in process and can be achieved by setting
feature_flag.promise_segmentsto true in the agent config.
The agent now properly checks for custom SSL certificates.
The check previously was falsely positive if there was an empty list of custom certificates. This caused red herrings to be admitted into the debug logs. Thanks to Seth Shober (@sethshober) for the fix!
Promise error handling is now more consistent.
Previously the agent would notice errors being emitted on
unhandledRejectionregardless of other listeners. Errors coming in on the
unhandledRejectionevent will not be recorded if there are handlers for the event - this is more in line with our error handling practices in other instrumentations.
.npmignorefile to exclude non-essential files.
The agent will now omit tests and examples on install from npm, drastically improving download times. Thanks to Serge Havas (@Sinewyk) for the contribution!
Logging has been reworked to reduce CPU overhead.
The check to see if a logging call was valid happened fairly late in the logic, causing unnecessary work to be done regardless of logger state. This has been rectified, netting a large decrease in CPU overhead.
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.
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.
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.
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.
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.
- Added more logging around the CAT feature.
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.
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
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.
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.
require('pg').nativemore 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.
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.
- Fixed an issue with collecting errors when an Express error handler removed message and stack properties from the error object.
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.