Notes
BREAKING - Updated the default of
config.transaction_tracer.record_sql
fromoff
toobfuscated
. This means that sql statements will be captured but obfuscated.BREAKING - Route (URL) parameters are now stored as
request.parameters.route.*
attributes on Transactions, root Segments and Spans.After this change, the following becomes true:
Query parameters will be available as attributes prefixed with request.parameters.* on Transactions and Spans.
Route parameters will be available as attributes prefixed with request.parameters.route.* on Transactions and Spans.
Route parameters (aka url parameters) are a common feature of various web frameworks, where you can create a placeholder as part of an API route definition.
For example, given the following Express route definition and request url:
app.get('/api/users/:id', myMiddleware, myController)bash$curl http://localhost:3000/api/users/abc123?id=trueThe route parameter is
id
, and has a value ofabc123
. This would becomerequest.parameters.route.id: abc123
on the Transaction, root Segment, and Span attributes. This example also has a query parameter ofid
, which has a value of true. This would becomerequest.parameters.id: true
on the Transaction, root Segment, and Span attributes.
BREAKING - Removed
captureUrlParams
fromWebFrameworkShim
class.DEPRECATION NOTICE:
shim.unwrap
andshim.unwrapOnce
will no longer function if you attempt to unwrap an item that has been wrapped multiple times.- This is because since we now allow instrumenting the same module more than once, you cannot safely unwrap without breaking all registered instrumentation. We plan to remove
shim.unwrap
andshim.unwrapOnce
in the next major release.
- This is because since we now allow instrumenting the same module more than once, you cannot safely unwrap without breaking all registered instrumentation. We plan to remove
Added the ability to register instrumentation multiple hooks (onRequire, onResolved) for the same resolved moduleName.
- This has been a limitation of the agent from the beginning.
- If you used the api to instrument
api.instrument
,api.instrumentDatastore
,api.instrumentWebframework
,api.instrumentMessages
, orapi.instrumentConglomerate
, it would override existing instrumentation hooks. The effect was that the Node.js agent would not function as designed.
Refactored lib/transaction/tracecontext.js to reduce cognitive complexity.
Refactored lib/transaction/trace/index.js to reduce cognitive complexity.
Upgraded devDependencies jsdoc, and lean-jsdoc-theme.
Support statement:
- New Relic recommends that you upgrade the agent regularly to ensure that you're getting the latest features and performance benefits. Additionally, older releases will no longer be supported when they reach end-of-life.