Improvements
Java 15
- The New Relic Java agent is now fully compatible with version 15 of the OpenJDK and Hotspot JDKs.
APIs
- New Segment.addCustomAttribute(...) APIs have been added for adding attributes directly to spans.
- Newrelic.addCustomParameter API now supports boolean values
Fixes
- The agent would try to read environment variables using system-property syntax. It will now log the correct syntax and ignore the incorrect value.
Notes
- The Java agent now includes the newrelic.com SSL certificate. In previous agent versions, applications using a custom Truststore would have to provide their certificate or use the
use_private_ssl
configuration which was removed in 6.0.0. - Fixed an issue where applications could fail to start due to the agent attempting to access the JMX MBean server before it was initialized.
Improvements
- Register an MBean to expose the agent linking metadata.
- Support for okhttp 4.4 instrumentation.
- Improve reconnect behavior by not pinning to preconnected collector host instance.
Fixes
- Fix for asynchronous jar file collection. Collection of modules will no longer block the initial first harvest.
- Fix for Real Time Streaming. The first Real Time Streaming harvest will no longer be delayed by 30 seconds.
- Fix for
reactor-netty
verifier versions - Fix race condition around connection pool exhaustion by separating pool timeout from connection timeout.
Note re: certificate bundle use_private_ssl
This release removed the certificate bundle from the agent artifact. Users previously using use_private_ssl
should now use the ca_bundle_path
configuration directive. For more information, see the Java v6.0.0 release on GitHub.
Improvements
Agent Extensions The Java agent now provides a configuration to disable reloading extensions during runtime.
extensions: reload_modified: false
Spring Webflux The Java agent now provides updated instrumentation for reactor-netty-0.8.0+ to link the Transaction across threads. In previous agent versions, Transactions would be named /NettyDispatcher.
Logging format To make the agent log easier to sort and read across locales, the date/time format has changed. The new format is log4j's ISO8610_OFFSET_DATE_TIME_HHMM and it is rendered like this in all locales:
2020-07-10T08:33:00,328-0700 [9550 1] com.newrelic INFO: New Relic Agent: Loading configuration file "lib/./newrelic.yml"
2020-07-10T08:33:00,423-0700 [9550 1] com.newrelic INFO: Using default collector host: collector.newrelic.com
All other data on the log line remains the same.
Fixes
- Solr instrumentation could throw a NullPointerException when Query.toString() returned null.
Improvements
Distributed tracing: With distributed tracing spans and/or Infinite Tracing, the Java agent will now incorporate additional information from the transaction event on to the root span event of the transaction.
New TracedMethod.addCustomAttribute(...) APIs have been added for adding attributes directly to spans.
Note: Any attribute include or exclude settings specific to transaction events should be applied to your span attributes configuration or your global attributes configuration.
The Java agent now uses AWS's IMDS v2 to gather instance information.
Fixes
- Jetty JMX metrics would not report when running embedded in Spring Boot.
- Local configuration settings could revert to the default following an agent reconnect.
Notes
Bug fixes
This is a patch release that resolves an issue in 5.12.0. With distributed tracing enabled and Infinite Tracing disabled, a defect in version 5.12.0 causes spans to be omitted from distributed traces.
Any customers currently on 5.12.0 are strongly encouraged to upgrade to this 5.12.1 patch release.
New Features
Added support for Infinite Tracing on New Relic Edge.
Infinite Tracing observes 100% of your distributed traces and provides visualizations for the most actionable data so you have the examples of errors and long-running traces so you can better diagnose and troubleshoot your systems.
You configure your agent to send traces to a trace observer in New Relic Edge. You view your distributed traces through the New Relic’s UI. There is no need to install a collector on your network.
Infinite Tracing is currently available on a sign-up basis. If you would like to participate, please contact your sales representative.
Known Issue
In-process spans from Java services will not appear in distributed traces. All users should upgrade to 5.12.1.
Improvements
Spring
Spring PatchMapping annotation will now be used to start and name transactions.
SQL
Common Table Expressions in SQL Server, Postgres, and MySQL will report Datastore Metrics
Datastore/<vendor>/statement/<first cte name>/with
andDatastore/<vendor>/operation/with
Distributed Tracing
Span events now report error attributes if an error occurs: TransactionError events will also contain a corresponding
spanId
attribute indicating where the error occurred.
Fixes
- Solr Instrumentation could cause a
NullPointerException
in the agent logs for queries containing null parameters - The
JAVA_ENV
environment variable configuration has been deprecated. UseNEW_RELIC_ENVIRONMENT
to set the environment configuration for the agent to use - The JDBC
ResultSet
instrumentation is now disabled by default internally. Applications configured solely via system properties and/or environment variables can enable with:-Dnewrelic.config.class_transformer.com.newrelic.instrumentation.jdbc-resultset.enabled=true
orNEW_RELIC_CLASS_TRANSFORMER_COM_NEWRELIC_INSTRUMENTATION_JDBC-RESULTSET_ENABLED=TRUE
- The
quartz_job
configuration did not affect applications using Quartz-2.0 and higher
Improvements
Java 14
The New Relic Java agent is now fully compatible with version 14 of the OpenJDK and Hotspot JDKs.
Java Flight Recorder
A new Java Flight Recorder agent extension is now available to report real-time Java profiling metrics for application running on Java 14, including thread allocation, garbage collection and heap memory
Fixes
- The agent would log a NullPointerException when trying to accept distributed trace payloads before it had connected to rpm.newrelic.com
- Fixes an issue where W3C headers from New Relic’s .NET agent could produce malformed W3C traceparent headers
- The agent now logs ForceRestartExceptions at warning level rather than severe
- The noticeError API now supports reporting attributes of boolean and number types rather than their string representations
Improvements
Support for W3C Trace Context, with easy upgrade from New Relic trace context
Distributed tracing now supports W3C Trace Context headers for HTTP and gRPC 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 current releases of New Relic agents. With this release, 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.
The New Relic trace header format can disabled using this config or as documented here:
newrelic.config.distributed_tracing.exclude_newrelic_header = true
Also, see Known issues and workarounds.
Cassandra
- This release adds instrumentation for queries in versions 3.8+ of the Datastax Cassandra driver, including slow query support. You’ll see relevant breakdowns in the overview chart, entries on the Databases page, and segments in transaction traces.
AWS Async SDK
- AWS S3 - The Java agent now reports calls to Amazon S3 using the S3AsyncClient as external metrics
- AWS SQS - The Java agent now reports calls to SqsAsyncClient as message queue metrics
- AWS SNS - The Java agent now reports calls to Amazon SQS using SNSAsyncClient as message queue metrics
Fixes
In an effort to modernize our language and improve clarity, we have renamed several config values. The old names will still work for now, but they will all be removed in the next major version.
transaction_tracer.slow_query_whitelist
is nowtransaction_tracer.collect_slow_queries_from
strip_exception_messages.whitelist
is nowstrip_exception_messages.allowed_classes
command_parser.blacklist
is nowcommand_parser.disallow
The
strip_exception_messages
config now excludes nested exception messagesThe agent will now use a lightweight tracer for SQL tracers beyond the segment_limit, improving performance in cases with a high number of segments.
The agent would fail to report the Docker
containerId
for some combinations of systemd and KubernetesThe agent logger would fail to log with:
“ERROR RollingFileAppender 'File': No TriggeringPolicy provided”
whennewrelic.config.log_file_count>1
andnewrelic.config.isDaily=false
andnewrelic.config.log_limit_bytes=0
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.24 or later before upgrading your downstream Java New Relic agents to this agent release.
Improvements
AWS SDK
- AWS S3 - The Java agent now reports calls to Amazon S3 using AmazonS3 and S3Client as external metrics
- AWS SQS - The Java agent now reports calls to Amazon SQS using AmazonSQS, AmazonSQSAsync, SqsClient as message queue metrics
- AWS SNS - The Java agent now reports calls to Amazon SQS using AmazonSNS, AmazonSNSAsync, SnsClient as message queue metrics
Distributed Tracing - The agent now supports distributed traces originating from the New Relic Browser agent
Fixes
- The
ca_bundle_path
configuration setting would fail to correctly import certificates when running on IBM J9 - Clarified the startup log message about the state of browser monitoring for the current application.
- The agent logger would sometimes throw a NullPointerException
- The agent would stop reporting Kafka metrics when one or more clients where closed
- HttpURLConnection instrumentation could cause a NullPointerException in the agent logs and fail to report External metrics
Deprecated
- Jar Collector system properties prefixed with
newrelic.config.module
and environment variables prefixed withNEW_RELIC_MODULE
are deprecated and will be removed in a future agent release. Instead use thenewrelic.config.jar_collector
andNEW_RELIC_JAR_COLLECTOR
prefixes.
Removed dependency
- The agent no longer has a dependency on ANTLR.
New features
- gRPC
- gRPC error reporting is now configurable
- Response codes, component type, and method type are now recorded as attributes.
- The agent now reports the gRPC status code rather than "translating" to HTTP status codes.
- Vert.x
- The Java agent now provides visibility into your applications built using the Vert.x 3.8. The agent instruments Vert.x Web, Vert.x Core, and Vert.x HTTP client. With this instrumentation, the agent will identify and name your transactions based on Vert.x web routing paths. The agent will also time web handlers, track async handlers, and external calls made with Vert.x HTTP client.
- XML custom instrumentation
- The custom XML instrumentation XSD has been enhanced to support now include support for specifying leaf tracers.
- Class Histogram
- A new Class Histogram extension is now available to report heap memory details as events.
- Jedis
- Added support for Jedis 3.0.0 and higher. You can now see your Jedis calls in breakdowns in the overview chart, entries in the Databases tab, and segments in transaction traces.
- Lettuce
- Instrumentation modules for Lettuce 4 and 5 are now available via the Java agent incubator.
New OSS SDK
We now have an open source Telemetry SDK for Java for sending telemetry data to New Relic. The current SDK supports sending dimensional metrics to the Metric API and spans to the Trace API.
Fixes
- The Solr 7 instrumentation would not report Update JMX metrics.
HttpURLConnection
instrumentation produced External metrics only when network methods (getInputStream
,getResponseCode
) are called.- MongoDB instrumentation would report duplicate metrics when applications invoked
MongoClientOptions.build()
more than once.