Support for W3C Trace Context, with easy upgrade from New Relic trace context
- Distributed Tracing now supports W3C Trace Context headers for HTTP protocols when distributed tracing is enabled. Our implementation can accept and emit both W3C trace header format and New Relic trace header format. This simplifies agent upgrades, allowing trace context to be propagated between services with older and newer releases of New Relic agents. W3C trace header format will always be accepted and emitted. New Relic trace header format will be accepted, and you can optionally disable emission of the New Relic trace header format.
- When distributed tracing is enabled, there are two new API function calls available that now support W3C
traceparentdistributed tracing headers in addition to the New Relic distributed tracing header information:
newrelic_insert_distributed_trace_headers()is used to add distributed tracing headers
newrelic_accept_distributed_trace_headers()is used to accept distributed tracing headers
- When distributed tracing is enabled, you can use the new configuration setting
newrelic.distributed_tracing_exclude_newrelic_headerto exclude the New Relic distributing tracing header and only rely on W3C Trace Context headers.
- Fixed a case where the memory usage of the PHP agent increases when
newrelic.transaction_tracer.max_segments_clilimit is reached.
- In rare cases, optimized segment data structures could cause crashes for long-running transactions that hit the segment limit set via
newrelic.transaction_tracer.max_segments_web. This has been fixed.
Known Issues and Workarounds
- If a .NET agent is initiating distributed traces as the root service, you must update that .NET agent to version
8.24or later before upgrading your downstream PHP New Relic agents to this agent release.