Bug fixes
The agent will now accurately filter out request parameters while operating under CSP or HSM.
You can find more information about this change in the Security Bulletin.
Improvements
- Agent now respects attribute type restrictions on trace/segment attributes, as well as error event/trace attributes.
Bug fixes
Fixes potential for
RangeError: Maximum call stack size exceeded
error on Transaction/Trace end.Custom events no longer accept attributes with invalid types.
The only attribute types accepted by the backend are
boolean
,string
, andnumber
; any attribute assigned to a custom event outside these types would be dropped on ingest. The agent now filters these attributes out, and logs out a helpful message detailing the issue.
Fixes
- Updated log message for not adding attributes and change the log level to debug.
- Fixed an issue where exclusive time would be improperly calculated in some cases.
New features
- Added
product
attribute to existing datastore instrumentations. - Added
db.collection
to datastore span event attributes.
Improvements
trusted_account_key
,account_id
, andprimary_application_id
may now be configured via a configuration file while in serverless mode.- Optimized exclusive time duration calculator.
Previously, the agent would spend a lot of time sorting redundant arrays while calculating the exclusive time for the segments of a trace. This has been refactored into a single postorder traversal over the tree which will calculate the exclusive time for all segments in the subtree rooted at a given segment.
Fixes
- Fixed a bug where data belonging to distributed traces starting in the Node.js agent would be prioritized over data produced from traces starting in other language agents. Previously, the agent would use the same random number for both the transaction priority (used for data sampling) and the distributed tracing trace sampling decision (whether to create DT data for a given transaction). This random number reuse resulted in a bias that caused data from distributed traces started in the Node.js agent to be prioritized above data that belongs to distributed traces started in other language agents. The agent now makes individual rolls for each of these quantities (i.e. the transaction priority and trace sampling decision), eliminating the bias.
- Prevent a split on undefined location under certain conditions in Memcached.
New features
Added
SNS
to message shim library names.Added check for
collect_span_events
in config sent from the server on connect.Collection of span events can be disabled from the server configuration, but not enabled.
Improvements
Refactored
Segment#toJSON
to be more readable.Added a
try/catch
to config initialization to safely handle invalid setting combinations.When an error is caught the agent is marked as disabled, which ultimately returns a stub API and keeps the process running.
String truncation is now done using a binary search over the byte length of the string.
Previously this truncation was done using a linear search for the proper byte length.
Optimized segment and span attribute filtering.
Fixes
Fixed issue where
shim.createSegment()
could result in modifying the parent when opaque.Fixed issue where
http-outbound
would modify parent segments when parent is opaque.Moved processing of exclusive time attribute out of
toJSON
and intofinalize
to only be calculated once.Previously, serializing a segment would result in calculating and caching exclusive time which could result in issues if serialized prior to ending.
New features
Added
span_events
andtransaction_segments
attribute destinations.Span event and segment attributes can now be filtered using the same include/exclude config rules as other types. See agent attribute configuration for more details.
Added
metadata
field to connect payload, for collectingNEW_RELIC_METADATA_
-prefixed environment variables.Added DynamoDB to datastores.
Added
opaque
option to datastore operation spec.Added Kubernetes utilization detection.
Upgraded
concat-stream
andreadable-stream
to next major version.These modules had previously been held back due to support for Node <6. Since v5.0.0 we dropped that support thus enabling these updates.
Added SQS as a supported messaging library name.
Enabled tracking of callback via
message-shim.recordConsume
when no messageHandler provided.
Improvements
- Replaced
make
rules with npm scripts.
Bug fixes
The agent will now consistently harvest in all response cases when in serverless mode.
Previously, the agent's harvest was in a race with process suspension in the event of an uncaught exception, or responding without calling a callback. A synchronous harvesting process is now used to circumvent this racing issue.
Fixed issue with socket connection errors causing the agent to stop attempting to connect at startup.
Fixed opaque segment functionality for
message-shim.recordProduce
.Fixed opaque segment functionality for
message-shim.recordConsume
.
Improvements
Removed installation of Oracle container test scripts.
Replaced explicit
config.high_security === true
checks with general truthiness checks.The agent will now treat any truthy value in the
high_security
config setting as if it is enabled.
Bug fixes
- Fixed bug where agent would stop sending data to New Relic servers when a connectivity issue was encountered.
- Fixed unit test with incorrect usage of cross application tracing.
New features
- Added Neptune to the known database names.
Improvements
Updated log messages for missing configuration files to point at the base configuration.
Previously the log messages pointed at an internal file defining default values for every configuration.
Upgraded to
@newrelic/native-metrics
v4.Removed outdated config files.
Removed old, outdated examples.
Bug fixes
Fixed an issue where old CAT headers would be injected while distributed tracing was enabled.
This would happen if both
cross_application_tracing.enabled
anddistributed_tracing.enabled
were set totrue
and an instrumentation disabled tracing for an outbound request.Fixed access to
ConglomerateShim
inshimmer
.
New features
Added new shim type:
ConglomerateShim
This shim class is useful for instrumenting modules which implement several service interfaces of different types.
Improvements
Disabled logging by default when serverless_mode is enabled. Please note serverless/lambda monitoring is not yet officially released.
null
trace attribute values are no longer sent to New Relic.This change brings the Node agent in alignment with the behavior of other language agents.
Notes
Dropped support for Node versions less than 6.
Agent no longer creates transactions when in a
stopped
,stopping
orerrored
state.Removed public API methods that have been deprecated since Agent v2:
createTracer
,createWebTransaction
,createBackgroundTransaction
, andaddCustomParameter
/(s)
. See the Migration Guide for more information.Flagged
API#setIgnoreTransaction
as deprecated;TransactionHandle#ignore
should be used instead.Released several feature flags. These flags are no longer used:
feature_flag.custom_instrumentation
feature_flag.custom_metrics
feature_flag.synthetics
feature_flag.native_metrics
Added
plugins.native_metrics.enabled
configuration value.This configuration value controls the use of the
@newrelic/native-metrics
module. When set tofalse
the agent will not attempt to load that module.Custom metrics recorded via
recordMetric
andincrementMetric
API calls now automatically have the name prepended with'Custom/'
. Usages of these APIs that manually prepend with'Custom/'
will need to remove the manually specified one or will end up with metrics prepended with'Custom/Custom/'
.Dropped support for
node-cassandra-cql
.Removed from
ignore_server_configuration
config setting.Removed deprecated configuration settings
capture_params
andignored_params
.The agent will no longer cause a stack overflow when logging at trace level to stdout.
Previously, the agent would inadvertently trigger a trace level log from its trace level log (through wrapping a nextTick call), causing a stack overflow. The agent now detects this case and aborts the nested call.