New features
Node v8 is officially supported with the exception of
async
/await
.Support for the new
async/await
keywords is coming in a future release. Until this support is added, New Relic does not support and highly discourages using the Node.js agent with applications that utilizeasync
/await
, as it could result in transaction state loss and data being mixed between transactions.
Fixes
- Fixed issues related to changes in the core networking modules that resulted in transaction state loss. Also instrumented new asynchronous API methods in crypto and inspector.
Bug fixes
Fixed a transaction state loss introduced in Node 7.10.0 when using
net.createConnection
.Added a new segment for
net.connect
,net.createConnection
, andhttp.Agent#createConnection
. Sockets created within a transaction also have theiremit
bound to the segment.Fixed a typo about the name of the default configuration file. Thanks Jacob LeGrone (@jlegrone)!
Notes
- Dropped support for Express <4.6.
New features
Improved API for writing web framework instrumentation.
Introduced a new
WebFrameworkShim
class for writing instrumentation. This shim can be accessed using thenewrelic.instrumentWebframework
API method.
Improvements
Incorporated fixes and features from 1.38.0, 1.38.1, and 1.38.2.
Only one transaction is created for each request emitted by a server.
Previously we created a transaction for each listener on the
request
event.Fixed the beta sign up link in the README.md.
Rewrote instrumentation for Connect, Director, Express, Hapi, and Restify.
These instrumentations were rewritten using the new
WebFrameworkShim
. As a consequence of this rewrite, all our instrumentations now have feature parity, meaning every instrumentation will create Middleware metrics for your server.Tutorials on using the new instrumentation shim can be found on our API docs: http://newrelic.github.io/node-newrelic/.
Removed
express_segments
feature flag.This configuration previously controlled the creation of middleware metrics in our Express instrumentation. With the move to the WebFrameworkShim this was dropped.
New features
Error messages are redacted in High-security mode now.
New configurations were added for disabling some New Relic API methods. These default to enabled and are all disabled in High-security mode.
api.custom_parameters_enabled
controlsnewrelic.addCustomParameters()
api.custom_events_enabled
controlsnewrelic.recordCustomEvent()
api.notice_error_enabled
controlsnewrelic.noticeError()
Updated the default value for
transaction_tracer.record_sql
toobfuscated
.This value was previously
off
by default. This change brings the New Relic Node Agent defaults in line with other New Relic Agents.
Bug fixes
Our when instrumentation better detects when a module is actually
when
.Thanks to Pasi Eronen (@pasieronen) for the contribution!
Quiet a warning in our native promise instrumentation on Node 0.10.
Fixed a bug in the generic pool instrumentation affecting version 3.
Bug fixes
When.js hooks similar to
Promise.onPotentiallyUnhandledRejection
now function as intended.Previously, hooks like
Promise.onPotentiallyUnhandledRejection
would not work due to the way the agent wraps the promise constructor. When.js expects these handles to be assigned directly onto the promise constructor, and our wrapper was intercepting the assignment. The wrapper will now properly proxy these values and assign them onto the original constructor, restoring the proper behavior.Express route parameters will now be properly attached to the corresponding transaction.
Previously, our express instrumentation would read the route parameters and place them on the segment responsible for matching the parameters. This behavior did not place the parameters on the transaction that the segments belonged to, causing the parameters to not show up properly on transaction traces and transaction events.
Bug fixes
Fixed issue with when.js instrumentation not preserving all properties on wrapped Promise constructor.
Previously, the when.js instrumentation would cause an unhandled exception when private methods on the Promise constructor were called (e.g. when adapting functions that do not use promises).
Improvements
We're excited to announce the addition of a new Node VMs page to the UI that provides a curated view of the cpu, memory, garbage collection, and event loop metrics that we have added over the past several releases of the node agent and native-metrics module.
For more information, see our documentation.
Added instrumentation of When.js promise library.
Previously, the transaction state could get lost when multiple promises resolved close to each other.
Fixed name of environment variable in error message when configuration file cannot be found. Thanks to @Maubic for the contribution!
Updated tests to work with the latest version of Node 7.
New Features
Added support for recording interfaces that return promises instead of taking callbacks. See
RecorderSpec.promise
for more details.Thanks to Gert Sallaerts (@Gertt) for this contribution.
Improvements
Incorporated fixes and features from 1.36.2, 1.37.0, and 1.37.1.
Domains are no longer preemptively instrumented, thus applications that do not use domains will not load the domain module.
Including the domain module causes a small amount of extra overhead in other core libraries that must keep the domain state set correctly.
Notes
Important
This release has been re-published to npm as 1.37.2. Please use version 1.37.2 or higher.
Improvements
Agent now wraps
emit
on http request/response objects instead of relying on listeners.Improved documentation for
newrelic.noticeError()
andignore_status_codes
configuration.The documentation now makes it clear that errors recorded using
noticeError()
do not obey theignore_status_codes
configuration value.Removed unused
yakaa
dependency.
Bug fixes
- Fixed a bug in normalization rules when replacements do not maintain initial
/
. - Better de-duplication of errors when the same error instance is used multiple times.
- Server-side naming rules are now applied even when user defined ones have matched.
- Errors reported outside of a transaction now include their stack trace on the error analytics page.
- A potential stack overflow in trace serialization has been removed.
- Fixed an issue with our Express and domain instrumentation related to a loss of transaction state that could result in incorrect transaction names, traces, and events.
- Nested background transactions now report the correct number of metrics.
Notes
This release is the same as v1.37.1 except it has been re-published to npm due to an issue with shrinkwrapping the previously published package.