Improvements
Bumped
@newrelic/aws-sdk
tov1.1.1
fromv1.0.0
. https://github.com/newrelic/node-newrelic-aws-sdk/blob/master/CHANGELOG.md Notable improvements include:- Added official support for API promise calls, fixing two critical bugs.
- Added check before applying instrumentation to avoid breaking for very old versions.
Added
bindPromise()
toShim
prototype for direct usage by instrumentation. Previously,_bindPromise()
was a private function in theShim
module.Updated language in agent to be in line with New Relic Standards.
Fixes
- Fixed spelling in configuration error. Thank you to David Ray (@daaray) for the contribution.
- Fixed long-log truncation issue in Serverless mode.
New Features
Added
getLinkingMetadata()
method to the API.This new method can be used to retrieve the identifying information for the agent and current active span and trace. Please consult the documentation for more information.
Added
getTraceMetadata()
to the agent API.This new method can be used to retrieve the current active Distributed Tracing span and trace ids. Please consult the documentation for more information.
Added an
isSampled()
method toTransaction
andTransactionHandle
.This new method can be used to retrieve the sampling decision made for a given transaction. Please consult the documentation for more information.
Fixes
- Upgraded
tap
to resolvehandlebars
audit warnings.
New Features
- Added
@newrelic/aws-sdk
module to agent for auto-include on install. - Added splitting of application name using semicolons in the env var.
- Instrumented
connection.execute
formysql2
.
Improvements
@newrelic/native-metrics
module is defaulted to disabled in serverless mode.This can reduce lambda cold-start times by up to 170ms. The
native-metrics
module can rarely load in serverless environments due to differences from build environment to deployed environment and offers little value in a serverless environment.Added env var
NEW_RELIC_NATIVE_METRICS_ENABLED
to enable/disable the native-metrics moduleAdded a test for querying poolCluster.of()
Added HTTP method to segment attributes for external requests.
Updated the
bin/ssl.sh
such that it uses verbose output, will exit on first error code, and will refuse to proceed with LibreSSL (which can't generate certs).Added a
clear
sub-command tobin/ssl.sh
that will allow developers to quickly remove generated ssl/cert files and regenerate (useful is switch between platforms via containers/docker and certs needs to be regenerated)
Fixes
- Removed unused
mysql
bootstrap test code. - Increased timeout for
index-bad-version
test to reduce flickers on Node 12. - Changed file modification to leverage
writeFile
forwatchFile
test. This triggers the watcher in a reasonable amount of time much more consistently. - Removed testing of Bluebird 3.7 on Node v10 until they fix the segfault issue.
Notes
Added official parity support for Node 12.
Exception: Errors resulting in unhandled rejections will no longer be scoped to the transaction that was active when the rejected promise was created.
As of Node 12, the promise responsible for triggering the init async hook will no longer be passed through on the promise wrap instance. This breaks the linkage used to relate a given promise rejection to the transaction it was scheduled in.
BREAKING Removed support for Node 6, 7, and 9.
The minimum supported version is now Node v8. For further information on our support policy, see: https://docs.newrelic.com/docs/agents/nodejs-agent/getting-started/compa....
- Bumped version of
@newrelic/superagent
instrumentation tov2.0.0
. - Bumped version of
@newrelic/native-metrics
tov5.0.0
.
- Bumped version of
BREAKING Bumped version of
@newrelic/koa
instrumentation tov3.0.0
@newrelic/koa
update includes changes to transaction naming in addition to dropping Node versions 6, 7, and 9. See@newrelic/koa
release notes for what was included inv2.0.0
andv3.0.0
updates. https://github.com/newrelic/node-newrelic-koa/blob/master/NEWS.md.BREAKING
max_samples_stored
behavior has changed to replacemax_samples_per_minute
.max_samples_per_minute
is no longer a configuration parameter.The new behavior for
max_samples_stored
is as follows: "The agent will collect all events up to this number per minute. If there are more than that, a statistical sampling will be collected." This usage of the configuration is consistent with other New Relic APM agents.If your application has previously used
max_samples_per_minute
as an upper bound, you may need to lower the threshold to a valid maximum to avoid data being dropped on the server. No larger than 10k is recommended.Updated utilization callback test to point to a host that can't represent a valid provider. Previously, location where CI provider runs tests could cause test to fail.
Added support for
Promise.allSettled()
method in Bluebird 3.7.Bumped
mongodb
dev dependency past security warning.Fixed
mongodb
versioned tests so they are self-contained by using version under test for setup/teardown instead of agent dev-dependency version.Forced filename resolution if not already cached on module load. This should not occur in normal/non-test scenarios but provides a fall-back to maintain functionality.
Refactored
restify
versioned tests to be less dependent on the order of asynchronous operations.Updated README to reference Pug rather than Jade.
Improvements
Added diagnostic code injector.
The agent may now be configured to make transaction state checks via code injection. This may be turned on by setting
code_injector.diagnostics.enabled
totrue
. While this option is enabled, code around async boundaries will be added to track transactions, and log a message when they are not properly reinstated.Added back generation of entity stats logging and uninstrumented support metric generation on metric harvests.
Removed legacy harvest code from main agent.
Upgraded
tap
to latest versionUpgraded
mocha
to latest version.Adds
--exit
flag to mocha test runs to prevent infinite runs on CI.
Fixes
primary_application_id
now defaults to 'Unknown' in serverless mode to allow Distributed Tracing to function correctly whenNEW_RELIC_PRIMARY_APPLICATION_ID
is not defined.Updated
https-proxy-agent
to v3 for security fix.Shoutout to @asturur for the contribution.
Fixed bug where
API.shutdown()
would not properly harvest when configured to.Fixed bug where multiple agent restarts would cause the number of 'stopped' listeners to exceed limit.
Fixed inconsistent async return from collector API.
This could result in an infinite loop due to attempting to merge before clearing. This bug should not have impacted normal agent runs but was uncovered for certain test cases.
Fixed tests that leave work scheduled on the event loop.
Fixed issue that could result in vendor utilization detection failure. As a part of this fix, the request that hits the timeout will immediately abort instead of hanging around for the default timeout.
New Features
Support for Real Time Streaming
- Event data is now sent to New Relic every five seconds, instead of every minute. As a result, transaction, error, and custom events will now be available in New Relic and Insights dashboards in near real time. For more information on how to view your events with a five-second refresh, see the real time streaming documentation.
- Note that the overall limits on how many events can be sent per minute have not changed. Also, span events, metrics, and trace data is unaffected, and will still be sent every minute.
Now supports Restify 7 and 8.
Distributed Tracing is now enabled by default in serverless mode.
HTTPS connections to New Relic now use a keep alive HTTP-Agent.
Improvements
- Maximum event limits are now enforced by the server. This includes a new maximum of 10000 transaction events per minute.
- Harvesting is now completed by individually scheduled harvesters per data type.
- Drops old odd-numbered node versions that are no longer supported by node from travis testing matrix
- Updated Mocha and Docker links in CONTRIBUTING.md.
Fixes
- Bumps tap version to move beyond handlebars audit warning.
- Bumps Restify dev dependency past audit warning.
- Fixed bug where segment reference on the outbound request was enumerable.
- Fixed bug where incorrect config information was sent to New Relic.
- The agent will now end/serialize transactions in the event of an uncaught exception while operating in serverless mode.
New Features
Implements Expected and Ignored Errors functionality
Adds support for scoped package name introduced in hapi v18 (@hapi/hapi).
This will provide functionality at parity with instrumentation for hapi v17. Any new features may not yet be supported.
Improvements
- Bumps jsdoc and lodash dev dependency to avoid upstream vulnerability warning.
- Adds detailed logging through harvest/collector code to increase supportability.
Fixes
Fixed bug where agent would count errors towards error metrics even if they were dropped due to the error collector being disabled.
The agent will now properly track cached paths to files in loaded modules on Node versions >10.
As of Node v11, the path to a file in a module being loaded will only be resolved on the first load; subsequent resolution of that file will use a cached value. The agent records this resolved path and uses it for relative file look ups in order to deep link into modules using
Shim#require
. Since the agent couldn't reliably get at the path on the subsequent calls to require, it now replicates the caching logic and hold onto the resolved path for a given file.
New Features
Enables ability to migrate to Configurable Security Policies (CSP) on a per agent basis for accounts already using High-security mode (HSM).
When both HSM and CSP are enabled for an account, an agent (this version or later) can successfully connect with either
high_security: true
or the appropriatesecurity_policies_token
configured.high_security
has been added as part of the preconnect payload.
Improvements
The agent now allows installation on node v11 and v12.
This change relaxes the engines restriction to include Node v11 and v12. This does not constitute official support for those versions, and users on those versions may run into subtle incompatibilities. For those users who are interested in experimenting with the agent on v11 and v12, we are tracking relevant issues here: https://github.com/newrelic/node-newrelic/issues/279.
Fixes
Lambda invocations ended with promises will now be recorded properly.
Previously, the lambda instrumentation was not intercepting the promise resolution/rejection returned from a lambda handler. The instrumentation now properly observes the promise, and ends the transaction when the promise has finished.
Lambda invocations will only attempt to end the related transaction a single time.
In the event of two lambda response events (e.g. callback called, and a promise returned), the agent would attempt to end the transaction twice, producing an extraneous empty payload. The agent now limits itself to a single end call for a given transaction.
The agent will now properly end transactions in the face of uncaught exceptions while in serverless mode.
Improvements
Shim#require will now operate as expected.
Previously, the module interception code made the faulty assumption that a module's filepath would be resolved before the module load call was invoked. This caused the wrap filepath to be attributed to the modules being instrumented. This meant that attempted relative require calls using Shim#require would resolved from the incorrect path. The logic has been changed to keep a stack of the resolved filepaths, resolving the issue.
Shim#wrapReturn now uses ES6 proxies to wrap its methods.
This will accurately propagate look up and assignment onto the underlying wrapped function, while maintaining all previous functionality.
Updated versioned test configurations to reflect current engine support.
Moved third party notices to
THIRD_PARTY_NOTICES.md
Updates error message for license check to indicate all places that need to be updated.
New Features
serverless_mode
feature flag is now enabled by default.- Added
instrumentLoadedModule
method to the API, allowing end-users to manually apply an instrumentation to a loaded module. Useful for cases where some module needs to be loaded before newrelic
Improvements
- Removed older versions of Cassandra from versioned tests
- For debug/test runs, shimmer will now cleanup the __NR_shim property on instrumented methods. This leftover property did not result in any negative behaviors but cleaning up for thoroughness and to prevent potential confusion.
- Fixes
recordMiddleware
promise parenting for certain cases where child segments are created within resolving middlewarenext()
promises.