Notes
Updated AWS metadata capture to utilize IMDSv2.
Fixed link to discuss.newrelic.com in README
Updated minimum Node version warning to output current Node version from process.
Bumped
@newrelic/native-metricsto ^7.1.1.Added
Nextjsto a framework constant within the webframework-shim.Updated shim to pass active segment to inContext callback.
Bumped
@grpc/grpc-jsto ^1.5.5.Bumped
@grpc/proto-loaderto ^0.6.9.Bumped
@newrelic/superagentto ^5.1.0.Bumped
@newrelic/koato ^6.1.0.Bumped
asyncto ^3.2.3.Resolved several npm audit warnings for dev deps.
Fixed Post Release workflow by properly configuring git credentials so it can push API docs to branch
Added
set -ein publish docs script to exit on possible failuresRemoved redundant
npm ciin publish API docs scriptAdded ability to ignore certain PRs in
bin/pending-prs.jsreport to slackUpdated README to include
@newrelic/pino-enricheras an external module.Fixed documentation in a sample of the Datastore Instrumentation for Node.js.
Added a new
mongo:5container tonpm run sevicesto test mongodb driver >=4.2.0.Fixed conditions in post release workflow to function when triggered via successful release and manual invoked.
Updated method for retrieving agent version from repository by using
cat package.json | jq .versionFixed minor formatting and spelling issues in
create-docs-pr.js.Fixed an issue with the docs PR script that assumed
\nin the NEWS.md file when extract version and release date
Notes
Bumped @newrelic/aws-sdk to ^4.1.1.
Upgraded
@newrelic/test-utilitiesto ^6.3.0.Includes
helpers.getShimso sub packages properly execute.Resolved dependabot and certain npm audit warnings.
Automation and CI improvements:
- Added a script to be used by agent developers to add a PR to
docs-websiteafter the release of agent. - Changed the trigger for post release jobs.
- Updated the
create-release-tagscript to pass in workflows to check before creating tag.- Fixed
create-release-tagto properly filter out all async workflow run checks - Updated agent release to pass in a different list of workflows vs the default
- Fixed
- Fixed release creation reusable workflow by passing in repo to
bin/create-release-tag.jsandbin/create-github-release.js. - Added
workflow_dispatchto Agent Post Release workflow for manual testing. - Added a reusable workflow to create a release tag, publish to NPM and publish a GitHub release.
- Updated agent release workflow to reference reusable workflow.
- Added a new workflow to update RPM and publish API docs on a published release event type.
- Added a script to be used by agent developers to add a PR to
Notes
Updated
onResolvedinstrumentation hook to only be called the first time we see a specific module filepath resolved.Removed
tracer.segmentin place of direct usage of context manager.Fixed an issue where multiple calls to
instrumentLoadedModuleresulted in re-instrumenting the same module.Fixed issue where
instrumentLoadedModulewould returntrueeven if the instrumentation handler indicated it did not apply instrumentation.Added support metrics for tracking when instrumentation was applied per module.
Supportability/Features/Instrumentation/OnResolved/<module-name>Supportability/Features/Instrumentation/OnResolved/<module-name>/Version/<major version>Supportability/Features/Instrumentation/OnRequire/<module-name>Supportability/Features/Instrumentation/OnRequire/<module-name>/Version/<major version>
Fixed issue where expected status code ranges would not be parsed until ignored status codes were also defined.
Added an input
changelog_fileto pass in name of changelog. This defaults toNEWS.mdbut some repos useCHANGELOG.mdAbstracted
bin/prepare-release.jsto work against other repositories.Added reusable prepare-release workflow that can be referenced in all other newrelic Node.js repositories.
Updated pending PRs workflow to check all repos the team owns.
Changed the event type from
pull_requesttopull_request_targetto allow for auto assign of PRs to the Node.js Engineering BoardFixed add to board workflow to properly pass repository secrets into reusable board workflow.
Changes token used to post issues to org level project board
Runs versioned tests for external modules against tests defined in the external repository instead of tests published in npm modules.
Added a reusable workflow to automatically add issues to the Node.js Engineering Board when created.
Added CI job to update system configurations with new agent version on release.
Moved
methods.jsunder bluebird versioned test folder.
Notes
Added onResolved instrumentation hook to apply instrumentation prior to module load.
This hook fires after the module filepath has been resolved just prior to the module being loaded by the CommonJS module loader.
Fixed issue where recordConsume was not binding consumer if it was a promise
Pinned mongo versioned tests up to 4.2.0 until we can address #982
Introduced a context management API to be used in place of manually calling tracer.segment get/set.
Notes
- Fixed issue where unhandled promise rejections were not getting logged as errors in a lambda execution
Notes
Fixed bug where failure to retrieve CPU/Memory details for certain Linux distros could result in a crash.
parseProcCPUInfoandparseProcMeminfonow check fornullinput prior to processing.Updated README to favor using
-rto load the agent vsrequire('newrelic').Updated
@newrelic/test-utilitiesto 6.1.1 and applied a global sampling value of 10 for versioned tests.Migrated utilization unit tests from mocha to tap.
Migrated logger unit tests from mocha to tap.
Cleaned up or added future removal comments for several deprecation warnings.
Added a script and corresponding CI job that will check for PRs that have been merged and not release and notify the team in a private slack channel.
Updated the versioned test runner to always run against minor versions.
Fixed a high severity npm audit failure.
Notes
Added full support for Fastify v2 and v3. Fastify instrumentation is now GA.
- Removed fastify feature flag.
- Instrumented Fastify routes by wrapping
addHook. - Added middleware mounting for fastify v3.
- Fixed capturing of mount point for middleware naming.
- Fixed the WebFramework spec definitions for Fastify middleware and route handlers to properly retrieve the IncomingMessage from a request object.
- Added proper definition to middleware handlers so that the relationship to consecutive middleware and route handler are siblings and not direct children.
Added experimental instrumentation for the undici http client behind a feature flag.
To enable undici support, add the following into your config:
{ feature_flag: { undici_instrumentation: true } }. The support for undici client is Node.js 16.x as it takes advantage of the diagnostics_channel. Lastly, you must be using v4.7.0+ of the undici client for any of the instrumentation to work.Note: There are currently some state issues if requests to an app are made with keep alive and you have multiple undici requests being made in parallel. In this case, set feature_flag:
{ undici_async_tracking: false }which avoids these state issues at the cost of some broken segment nesting.
Notes
Deprecation Warning: Cross Application Tracing (CAT) has been deprecated and will be removed in a future major release. For applications that explicitly disable Distributed Tracing (DT) to leverage CAT, we recommend migrating to DT to avoid loss of cross-service visibility.
- Disables CAT by default. You must explicitly enable CAT along with turning off DT.
- Adds a deprecation warning when CAT is enabled and active (DT disabled).
Fixed issue with
clearTimeoutthat could result in dropping parent segments or spans. This bug resulted in some MongoDB calls being dropped from Transaction Traces and Distributed Traces (spans): https://github.com/newrelic/node-newrelic/issues/922.Removed warnings from agent tests for
no-vareslint rule.Added support for Cassandra driver v4.0.0 and above.
Fixed issue where DT headers would not be processed by
transaction-shim.handleCATHeaders()when CAT was explicitly disabled. This primarily impactsamqplibinstrumentation.Transitioned aws-lambda.test.js to use Tap over Mocha.
Removed warnings from agent for
no-vareslint rule.Refactored
transaction-shim,httpandhttp-outboundto use centralized CAT methods inutil/catReplaced http-outbound test call to use example.com to avoid unpredictable connection resets.
Migrated sql query parser tests to tap
Added more API usage examples.
Added a README to the
examples/folder discussing how to use the examples.Fixed
message-shimtest assertion to avoid flakiness based on precision differences(ms vs ns)Applied new lint rules barring the use of
varand preferring the use ofconstwherever possible.
Notes
Enabled Distributed Tracing (DT) by default.
- Added ability to configure the maximum number of spans that can be collected per minute via
span_events.max_samples_storedand environment variableNEW_RELIC_SPAN_EVENTS_MAX_SAMPLES_STORED. - Added supportability metric SpanEvent/Limit.
- Added ability to configure the maximum number of spans that can be collected per minute via
Added support for properly setting the
hostandportfor clustered MongoDB requests.Fixes issue where
.fastifyand.defaultproperties would be missing from thefastifyexport when instrumented.Instrumentation now sets
.fastifyand.defaultproperties to the wrappedfastifyexport function for fastify v3.Added the following environment variables for the corresponding configuration items:
config item:
transaction_events.max_samples_storedenv var:NEW_RELIC_TRANSACTION_EVENTS_MAX_SAMPLES_STOREDconfig item:
custom_insights_events.max_samples_storedenv var:NEW_RELIC_CUSTOM_INSIGHTS_EVENTS_MAX_SAMPLES_STOREDconfig item:
error_collector.max_event_samples_storedenv var:NEW_RELIC_ERROR_COLLECTOR_MAX_EVENT_SAMPLES_STORED
Converted several unit tests to use the tap API.
Changed assertions for two HTTP error message tests to work with all versions of Node.js.
Notes
Added a new feature flag
unresolved_promise_cleanupthat defaults totrueonly whennew_promise_trackingfeature flag is set totrue. If disabled, this will help with performance of agent when an application has a lot of promises. To disable, in your config setfeature_flag.unresolved_promise_cleanuptofalseor pass in the environment var ofNEW_RELIC_FEATURE_FLAG_UNRESOLVED_PROMISE_CLEANUP=falsewhen starting application with agent.WARNING: If you set
unresolved_promise_cleanuptofalse, failure to resolve all promises in your application will result in memory leaks even if those promises are garbage collectedSupported using
connectto route middleware calls.Removed stubbed out tests in memcached unit tests.
Refactored
dropTestCollectionsin mongo versioned tests to await for alldropCollectionoperations to be finished before closing connection and returning.Ported remaining mocha tests in
test/unit/instrumentationto exclusively use tap.Added
@newrelic/eslint-configto rely on a centralized eslint ruleset.Removed integration tests for oracle.
Converted config unit tests to fully use tap API and extracted related tests into more-specific test files.
Added a pre-commit hook to check if package.json changes and run
oss third-party manifestandoss third-party notices. This will ensure thethird_party_manifest.jsonandTHIRD_PARTY_NOTICES.mdup to dateReplaced
JSVwithajvfor JSON schema validation in tests.Removed
throughin lieu of core Node.js implementation of Transform stream in tests.