Improvements
- Java 11
The New Relic Java agent is now fully compatible with Java 11. For more on JDK releases and the Java agent, see this topic on the Explorers Hub.
- Solr 7.0 JMX Metrics
The Java agent now collects JMX metrics for Solr 7.0
Improvements
Spring 5
The Java Agent now provides instrumentation for Spring 5 and Webflux. The agent will name transactions based on router functions as well as Spring controller and spring web annotations. The agent also provides support for Spring WebClient to capture external requests and timing.
Spring 5 instrumentation works with Spring Boot, Tomcat, and Jetty.
Note if you have previously disabled Spring instrumentation: There is a new
spring-4.3.0
instrumentation module that gets used in place of the previousspring-4.2.0
module for any customers running Spring 4.3.0 and above. If you had previously disabled support for spring-4.2.0 and you are running spring-4.3.0 you will want to change yourclass_transformer
section in your newrelic.yml from:class_transformer:com.newrelic.instrumentation.spring-4.2.0:enabled: falseto:
class_transformer:com.newrelic.instrumentation.spring-4.3.0:enabled: false
Fixes
- Fixes an issue where the agent could cause an application deadlock when two tokens are created and linked from the other’s thread. This affects users of the New Relic token API and also users of the Hystrix framework.
- Fixes an issue where the agent would not capture JMX Datasource information from Tomcat when JDNI GlobalNamingResources is used.
Known Issues
Transaction reporting to New Relic may be delayed by up to 10 minutes when Spring WebClient is used to create http requests that never execute.
Improvements
Apache HttpAsyncClient
The Java agent now provides instrumentation for Apache HttpAsyncClient 4.1+. You will see your HttpAsyncClient calls as externals in New Relic.
AsyncHttpClient
The Java agent now provides instrumentation for AsyncHttpClient. You will now see the time spent in external service calls made using AsyncHttpClient in New Relic. If the external service is also running New Relic, you will see cross application tracing (CAT) details as well.
Vert.x 3.5
The Java agent now provides visibility into your applications built using the Vert.x 3.5. 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.
JBoss EAP 7
The Java Agent now provides instrumentation for JBoss EAP 7. You will now see the same visibility into your web transactions, app server stats, and frameworks that you have with previous versions of JBoss EAP.
Play 2.7
The Java Agent now provides instrumentation for Play 2.7. The previous Java agent release supports versions of Play up to 2.6.
WebSphere Liberty
Added ThreadPool metrics for WebSphere Liberty Profile. You will now see the active threads in the Threads tab of the JVM metrics page
Fixes
- Fixes an issue where OKHttp 3 was not tracking external total time correctly.
- Fixes an issue where for some JDBC drivers, the agent would execute additional getMetaData queries..
- Fixes an issue with the agent’s Scala instrumentation that could result in incorrect throughput, invalid or negative data in transaction segments, or inability to ignore status codes.
- Fixes an issue with the play-ws instrumentation that caused ClassNotFound exceptions to occur in the agent logs when
withHeaders
is used. This could result incomplete transactions and attributes in RPM.
Improvements
- Java 10
The New Relic Java agent is now fully compatible with Java 10. For more on JDK release and the Java agent, see this topic on the Explorers Hub.
- Not compatible with Java 6
In order to continue to innovate and efficiently provide new capabilities to our customers who run on the JVM, this and future agent versions are not compatible with Java 6. If you are running Java 6, you may continue to use Java agent 4.3.0 or lower. For details, see this topic on the Explorers Hub.
- Akka 2.5 and Akka HTTP 10.1
The Java agent now supports Akka 2.5.x and Akka HTTP 10.1.x. You will see your Akka HTTP calls as New Relic transactions, see the hand-offs between Akka actors, and understand the calls to other databases and services.
- Solr 7
The Java agent now supports Solr 7.x. New Relic’s Solr support reports database calls to Solr servers as well as monitors the Solr server itself.
Known Issue: JMX stats collection for Solr 7 isn't supported as of this release.
- WebLogic datasource
The Java agent now displays health data about WebLogic’s datasource in the Datasource tab under the JVM page.
Fixes
- Fixed an issue where the Java agent 4.3.0 would not report data depending on the locale setting of the JVM. Java Agent 4.3.0 failed to send event data if the JVM locale is set to use a comma as the decimal. You would see NumberFormatException in the agent log.
- Fixed a rare issue where the agent will incorrectly attempt to continually retransform classes when an extension with a modification date in the future is used, causing a significant increase in CPU load.
- Fixed a ConcurrentModificationException caused by ning instrumentation that manifests in Mule instrumentation that causes the request it affects to be retried and the Java agent to not report header data.
- Fixed an issue where if
enable_auto_app_naming
was set to true anddistributed_tracing.enabled
was set to true it would sample every distributed trace event. Now if the agent has both configs enabled, it will not turn on distributed tracing.
Improvements
- Distributed tracing
Distributed tracing lets you see the path that a request takes as it travels through your distributed system. By showing the distributed activity through a unified view, you can troubleshoot and understand a complex system better than ever before.
Distributed tracing is available with an APM Pro or equivalent subscription. To see a complete distributed trace, you need to enable the feature on a set of neighboring services. Enabling distributed tracing changes the behavior of some New Relic features, so carefully consult the transition guide before you enable this feature.
To enable distributed tracing, set enabled to true in the distributed_tracing
section in the newrelic.yml config file.
distributed_tracing: enabled: true
- Added configuration option
proxy_scheme
to allow the agent to connect via https only proxies.
Fixes
- Fixed an issue where transaction throughput counts could be artificially inflated when using async servlets in Jersey.
- Fixed an issue where JBoss and Wildfly datasources could cause a
LinkageError
.
Bug fixes
- Fixed a bug where transactions were being kept alive for too long when application is under heavy GC, causing inaccurate throughput to be reported.
- Fixed a bug in which Akka routing instrumentation could cause extra memory usage. When this is the case, the transaction throughput will look significantly lower than anticipated.
- Fixed a rare bug in Play WS instrumentation where exceptions thrown by instrumentation were propagated out to the application code, potentially causing the request to error.
- Fixed a bug where Jersey Client and HttpUrlConnection could be double instrumented, resulting in inflated external call count.
- Fixed a bug where the total time and response time for a long running task could be misreported.
Improvements
- Configuration for
custom_insights_events.max_samples_stored
format in YAML has been changed. For agents 4.1.0 and above, the old .yml config setting will be ignored, which will result in the agent defaulting to max samples stored of 10,000 custom events. When you update your agent, please migrate to the new format:
custom_insights_events: enabled: true max_samples_stored: 5000
- The agent will log a warning message when it detects that the
java.endorsed.dirs
property is used. Classes in these directories cannot be instrumented by the agent because they are loaded by the bootstrap classloader.
Fixes
- Ensure that custom events added during a transaction do not get discarded if the transaction is ignored via a call to
NewRelic.ignoreTransaction()
. - A security update that corrects an issue affecting PostgreSQL that could occur if High-security mode was enabled (or
record_sql
was set to off) and a query ran slow enough to trigger an explain plan. If the above conditions were met the agent may not have properly stripped out all information from the query. For information on this fix, see the security bulletin. - Addresses cases where the agent could not parse database statements that included the
IGNORE
andINTO
keywords.
Fixes
- Fixes an issue Introduced in 3.48.0 with event sampling. The agent would only report the first max_samples_stored events in a given minute reporting period and disregard the remainder for that minute. With the fix, the agent randomly samples those events across the reporting period.
Improvements
- Removed the SSL configuration option: SSL is now always used in communication with New Relic servers. The
newrelic.yml
ssl configuration and-Dnewrelic.config.ssl
system property are no longer used. Setting either value to anything other than true will result in logging a warning. - Minimum version required for use in EU data center.
Fixes
- Fixes an issue where the thread profiler could fail to report. In this case, the agent logged a
java.lang.StackOverflowError
.
Improvements
- Customers using Tomcat, WebSphere Liberty, or Resin now have data source information available. Data source information includes the number of active and idle connections, as well as the maximum possible connections. This information can be seen under the Data Source tab on the JVMs page
- CompletableFuture instrumentation is more efficient
- Disabling SSL connections to New Relic has been deprecated. SSL connections are enabled by default. In a future release, the option to disable SSL will be removed.
Bug fixes
- Fixed an issue that in rare cases prevented Play async transaction tracking
- Fixed a memory leak that could occur in Spymemcached instrumentation
- Fix to disable
attributes.include
lists when High-security mode is enabled - Fixed an issue where errors outside of a transaction did not contain custom attributes on the event
- Fixed an issue that caused the UI to not display errors that had error messages over 255 bytes