Notes
Bug Fixes
- updated prisma instrumentation to properly parse database connection strings that work across all versions of prisma (#1634) (b2101fd)
Code Refactoring
- run-versioned-tests.sh: added ability to run versioned tests and skip collecting coverage by passing in
SKIP_C8
env var to the job. (#1621) (0ba9dcb)
Documentation
Miscellaneous Chores
- pin testdobule to 3.17.2 as 3.18.0 no longer works on node 14 (#1628) (d68bd9f)
- remove release-please workflow and scripts (#1624) (80f7eb8)
Tests
- pin prisma to 4.14.0 until we fix instrumentation (#1631) (a60659d)
- scripts: fix failing changelog unit test (#1626) (08f48b3)
- config: increase test coverage (#1625) (67f39d8)
- config: revert changes to lib/config/index.js (#1630) (fea1068)
Continuous Integration
- changed versioned tests script to use SKIP_C8 (#1621) (83e95e3)
- add --use-new-release functionality (#1633) (d97b421)
- add ability to generate release notes from conventional commits (#1623) (880a88b)
- create-docs-pr: Set username/email to machine user by default (#1627) (3870a1f)
- fix issue with missing type in the prep-release (#1638) (9a906e8)
- update prep-release to fetch entire history of caller repo (#1641) (428174a)
- update to conditionally add CLI flag to prep-release (#1640) (b167c93)
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.
Notes
Added batching and compression to infinite tracing.
- These options are on by default.
- To restore uncompressed spans set
config.infinite_tracing.compression
tofalse
. - To send single spans vs batches set
config.infinite_tracing.batching
tofalse
. - The environment variables for these new configurations are:
NEW_RELIC_INFINITE_TRACING_BATCHING
andNEW_RELIC_INFINITE_TRACING_COMPRESSION
.
Added support to record Nest.js error stack traces.
- Nest.js is officially supported via underlying instrumentation of express or fastify.
Added job to create a release notes PR in the post-release workflow.
Removed request library and updated helper to use http/https to make requests in tests.
Reduced cognitive complexity in lib/serverless/aws-lambda.js
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.
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.
Notes
- Added a new configuration option
heroku.use_dyno_names
to specify whether or not to useprocess.env.DYNO
for naming the host name and display host. This option defaults to true. If you are on heroku and do not want this functionality setheroku.use_dyno_names
tofalse
. You can also control this configuration options with the environment variable ofNEW_RELIC_HEROKU_USE_DYNO_NAMES
. Thanks @benney-au-le for your contribution ๐
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.
Notes
- Restored assigning loaded version of agent to require.cache as
__NR_cache
instead of a symbol to properly detect attempts at loading agent twice.
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.
Notes
- Added new API function called
setErrorGroupCallback
, which provides a way for you to customize theerror.group.name
attribute of errors that are captured by the agent. This attribute controls how the Errors Inbox functionality groups similar errors together. To learn more about this function, please refer to our example app.
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.
Notes
Updated http instrumentation to no longer remove the
x-new-relic-disable-dt
header when using AWS SDK v3. This was done to prevent the "The request signature we calculated does not match the signature you provided. Check your key and signing method." error from AWS SDK.Added an API method
setUserID
to provide an ability to associate a unique identifier with a transaction event, transaction trace and errors within transaction. The attribute will beenduser.id
.Added default configuration for security agent.
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.
Notes
Added ability to mark errors as expected when using
newrelic.noticeError
, by adding an optional boolean:newrelic.noticeError(error, {customAttributes}, true|false)
when there are custom error attributes.newrelic.noticeError(error, true|false)
if there are no custom error attributes.expected
errors do not affect error metrics or Apdex.
Added ability to disable distributed tracing for aws-sdk 3.290.0 and higher.
Updated README header image to latest OSS office required images
Updated @grpc/grpc-js from 1.8.8 to 1.8.9
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.
Notes
- This version of the agent was not available, and has been deprecated. The NPM release pipeline did not run successfully. New Relic recommends installing Node agent v9.12.1 instead.
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.
Notes
- Added instrumentation for Prisma(
@prisma/client
).- Miniumum supported version of
@prisma/client
is 4.0.0. - Captures spans for queries.
- It names them based on the model and action.(i.e. Datastore/statement/Prisma/user/create)
- For statements and queries using the
$queryRaw
,$executeRaw
,$queryRawUnsafe
, and$executeRawUnsafe
the names will be aligned with the raw SQL.(i.e. Datastore/statement/Prisma/User/select)
- Captures database metrics for all statements and queries.
- Captures SQL Traces.
- Provides connection between application and database server via service maps.
- Miniumum supported version of
Huge shoutout to @osmanmrtacar for the original contribution
- Updated
@grpc/protoloader
from 0.7.4 to 0.7.5. - Updated
@grpc/grpc-js
from 1.8.7 to 1.8.8.
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.