Node.js agent release notesRSS

January 4, 2022
Node.js agent v8.7.0

Notes

  • Updated onResolved instrumentation hook to only be called the first time we see a specific module filepath resolved.

  • Removed tracer.segment in place of direct usage of context manager.

  • Fixed an issue where multiple calls to instrumentLoadedModule resulted in re-instrumenting the same module.

  • Fixed issue where instrumentLoadedModule would return true even 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_file to pass in name of changelog. This defaults to NEWS.md but some repos use CHANGELOG.md

  • Abstracted bin/prepare-release.js to 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_request to pull_request_target to allow for auto assign of PRs to the Node.js Engineering Board

  • Fixed 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.js under bluebird versioned test folder.

November 17, 2021
Node.js agent v8.6.0

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.

November 9, 2021
Node.js agent v8.5.2

Notes

  • Fixed issue where unhandled promise rejections were not getting logged as errors in a lambda execution

November 3, 2021
Node.js agent v8.5.1

Notes

  • Fixed bug where failure to retrieve CPU/Memory details for certain Linux distros could result in a crash.

    parseProcCPUInfo and parseProcMeminfo now check for null input prior to processing.

  • Updated README to favor using -r to load the agent vs require('newrelic').

  • Updated @newrelic/test-utilities to 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.

October 12, 2021
Node.js agent v8.5.0

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.

September 28, 2021
Node.js agent v8.4.0

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 clearTimeout that 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-var eslint 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 impacts amqplib instrumentation.

  • Transitioned aws-lambda.test.js to use Tap over Mocha.

  • Removed warnings from agent for no-var eslint rule.

  • Refactored transaction-shim, http and http-outbound to use centralized CAT methods in util/cat

  • Replaced 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-shim test assertion to avoid flakiness based on precision differences(ms vs ns)

  • Applied new lint rules barring the use of var and preferring the use of const wherever possible.

September 9, 2021
Node.js agent v8.3.0

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_stored and environment variable NEW_RELIC_SPAN_EVENTS_MAX_SAMPLES_STORED.
    • Added supportability metric SpanEvent/Limit.
  • Added support for properly setting the host and port for clustered MongoDB requests.

  • Fixes issue where .fastify and .default properties would be missing from the fastify export when instrumented.

    Instrumentation now sets .fastify and .default properties to the wrapped fastify export function for fastify v3.

  • Added the following environment variables for the corresponding configuration items:

    • config item: transaction_events.max_samples_stored env var: NEW_RELIC_TRANSACTION_EVENTS_MAX_SAMPLES_STORED

    • config item: custom_insights_events.max_samples_stored env var: NEW_RELIC_CUSTOM_INSIGHTS_EVENTS_MAX_SAMPLES_STORED

    • config item: error_collector.max_event_samples_stored env 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.

August 25, 2021
Node.js agent v8.2.0

Notes

  • Added a new feature flag unresolved_promise_cleanup that defaults to true only when new_promise_tracking feature flag is set to true. If disabled, this will help with performance of agent when an application has a lot of promises. To disable, in your config set feature_flag.unresolved_promise_cleanup to false or pass in the environment var of NEW_RELIC_FEATURE_FLAG_UNRESOLVED_PROMISE_CLEANUP=false when starting application with agent.

    WARNING: If you set unresolved_promise_cleanup to false, failure to resolve all promises in your application will result in memory leaks even if those promises are garbage collected

  • Supported using connect to route middleware calls.

  • Removed stubbed out tests in memcached unit tests.

  • Refactored dropTestCollections in mongo versioned tests to await for all dropCollection operations to be finished before closing connection and returning.

  • Ported remaining mocha tests in test/unit/instrumentation to exclusively use tap.

  • Added @newrelic/eslint-config to 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 manifest and oss third-party notices. This will ensure the third_party_manifest.json and THIRD_PARTY_NOTICES.md up to date

  • Replaced JSV with ajv for JSON schema validation in tests.

  • Removed through in lieu of core Node.js implementation of Transform stream in tests.

August 5, 2021
Node.js agent v8.1.0

Notes

  • Added necessary instrumentation to support v4 of mongodb.

    • Explicitly enabled APM for mongodb instrumentation(client.monitorCommands = true)
  • Fixed issue where Promise based pg.Client.query timings were always in sub-millisecond range.

  • Fixed bug where API.shutdown would not harvest or keep process active effectively after an agent restart.

    The agent will now correctly update its state to 'started' after a reconnect has completed.

  • Added an eslint rule to verify every file includes the copyright statement.

  • Fixed the homepage field in package.json to use https in the link to the github repo. Thank you @pzrq for the contribution.

July 26, 2021
Node.js agent v8.0.0

Notes

  • Added official parity support for Node 16.

  • BREAKING: Dropped Node v10.x support. For further information on our support policy, see: https://docs.newrelic.com/docs/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent.

    • Upgraded @newrelic/superagent @newrelic/aws-sdk @newrelic/koa @newrelic/native-metrics and @newrelic/test-utilities to the latest major versions.
    • Refactored creation of span event aggregator to prevent crash of gRPC when running on invalid Node.js version.
    • Added check for minimum node version >= 12.
    • Set package.json engines node field >= 12 and npm field to >=6.
    • Removed Node v10 from ci workflow and smoke-test version matrix.
    • Removed comments around replacing temporarilyOverrideTapUncaughtBehavior test helper function.
    • Removed non-applicable semver checks for versions the agents no longer supports.
  • BREAKING: The agent no-longer includes the New Relic certificate bundle automatically when using the 'certificates' configuration (commonly with proxies). If you find this breaking your current environment, you may leverage a feature-flag to temporarily restore this functionality. Example configuration: feature_flag: { certificate_bundle: true }. In this case, we recommend getting a certificate bundle for your environment such as the one from Mozilla. The New Relic bundle and feature flag will be fully removed in next major release.

    • Defaulted config.feature_flags.certificate_bundle to false.
  • BREAKING: Removed serverless_mode as a feature flag.

    The standard serverless_mode configuration still exists.

  • Added hapi 19 and 20 to versioned tests for Node.js >=12 and <16

  • Added hapi ^20.1.2 to versioned tests for for Node.js >=16

  • Upgraded tap to v15.

  • Upgraded https-proxy-agent to v5.0.0.

  • Updated linting to always use latest LTS Node version.

  • Updated CI and Smoke Test scripts to use setup-node@v2.

  • Added no-const-assign to eslint ruleset.

  • Pinned mongodb versioned tests to <4.0.0.