New features
Instrumentation will now only modify the arity of wrapped functions when needed.
This can be controlled with the
matchArity
property on aWrapSpec
. Disabling arity matching has a significant, positive impact on the performance of instrumentation.
Improvements
Added benchmarks for shimmer methods.
Pinned hapi tests at v16 due to incompatibility in hapi v17 with Node.js versions <8.
The agent's parsed queries will now only hold onto the stack that the query was made at, instead of an error object instance.
Previously, the parsed query objects would hold onto an error instance, which would in turn hold onto references to all the functions in the stack when the error was created. This could cause memory issues if the functions were holding onto references to other pieces of data.
Bug fixes
Revert wrapping of
https
for Node^8.9.1
.The original cause for this problem was reverted by Node.
Improvements
- Added Node 9 to test suite.
- Removed problematic tests for ancient version of Hapi (7.1).
- Document purpose of
throw
in tracer to prevent developer confusion. - Added script for running agent micro benchmarks.
- Added benchmarks for all the
Shim
andTracer
methods.
Bug fixes
- Fixed a bug with Node >=8.9 that prevented https externals from being recorded.
Improvements
- Agent will attempt to reconnect to the collector forever after backing off to 5 minute delays.
Bug fixes
- Refactored environment scan to improve startup time and fix cyclical symlink resolving.
New features
- The agent will now support the Node 8
await
keyword by default.
Improvements
- Added benchmark for performance of function wrapping.
- Added Garbage Collection information to async_hooks benchmark.
- Improved trace-level logging for capturing queries.
- Added cases for omitting the agent with and without async hooks to the async hooks microbenchmark.
Bug fixes
- Pinned version of Mocha to 3.x due to the incompatibility of Mocha v4 and Node v0.10 and v0.12.
Bug fixes
Hapi handlers will now preserve the defaults associated with them.
Previously when wrapping handlers, the agent would drop the associated defaults on the ground, these are now properly forwarded to the wrapper. Big thanks to Sean Parmelee (@seanparmelee) for finding the root cause of this bug and reporting it!
Fixed starting the agent with an invalid process version.
Pinned
request
version for testing old versions of Node.Added tests for feature flags created at agent initialization.
Improvements
- Added metrics for enabled/disabled feature flags.
Bug fixes
- Fixed transaction naming for Hapi plugins.
Thanks to Marc Höffl (@KeKs0r) for providing a reproduction!
New features
Added support for ignoring ranges of status codes.
The configuration
error_collector.ignore_status_codes
can now take ranges of numbers. For example,ignore_status_codes: ['400-404']
would ignore 400, 401, 402, 403, and 404.Experimental instrumentation for
async/await
This is experimental instrumentation and has not yet been tested in a wide array of production environments. The feature is currently off by default behind a feature flag. To enable this experimental instrumentation, add
await_support: true
to thefeature_flag
setting in your agent config file.
Improvements
Updated examples and documentation regarding custom transaction creation.
All examples and documentation now point at the
newrelic.start*Transaction
methods.Transaction state is now maintained in
ChildProcess
event listeners.Reducing logging verbosity in the SQL query obfuscator.
Bug fixes
Fixed a bug when a custom collector port was provided in the configuration that prevented redirected connections from working.
Fixed a bug in
Shim#record
that could cause an exception when trying to create a new segment as part of an ended/inactive transaction.Fixed issue with custom Hapi handlers causing an error.
Previously custom Hapi handlers defined using the
server.handler()
method were causing the Hapi server to return a 500 error. Now they are correctly handled and recorded as middleware functions.
Improvements
- Improved metadata collection for AWS, Azure, GCE, and Pivotal Cloud Foundry.
Bug fixes
Fixed a bug in PG query obfuscation for
$
placeholders.The agent used to mis-detect
$1
value placeholders as unmatched dollar-quoted strings causing the whole query to be obfuscated to just?
. These placeholders are now correctly detected and obfuscated.
Improvements
Improved documentation for
newrelic.start*Transaction
andTransactionHandle.
Formatting for the
startWebTransaction
andstartBackgroundTransaction
methods was fixed and documentation for theTransactionHandle
class whichgetTransaction
returns was added.
Bug fixes
Fixed parsing the table name from SQL queries.
Quotes around the table name are now stripped after parsing the query and before constructing the metrics.
Fixed unhandled rejection error caused by
ioredis
instrumentation.
Bug fixes
Fixed issue with transaction events not including correct duration values.
This issue was introduced in v2.0.0, and it has affected web transactions histogram and percentile charts.
Fixed issue with Redis instrumentation causing the agent to crash in some cases.
Previously, the Redis instrumentation would crash the agent when Redis commands were called without a callback and after the transaction has ended.
Fixed issue with the agent crashing on Node v4.0-4.4 and v5.0-5.9.
This issue was caused by incorrect shim for Buffer.from(), and it affected older minor versions of Node v4 and v5.