Improvements
- This release adds Transaction event attributes that provide context between your Kubernetes cluster and services. For details on the benefits (public beta coming soon) see this blog post.
- The Java agent now supports setting all configuration options via Environment variables. Environment variables will take precedence over newrelic.yml but cannot be updated dynamically since they are read statically on application startup.
- Adds instrumentation for the Akka HTTP client, versions 10.0 to 10.1.x. This client is used via the
Http().singleRequest()
method and the agent will now automatically capture these requests as External metrics. - Support for MySQL connector 8.0.x
- Adds official support for Akka Http 10.1.6
- Span event attributes can now be filtered using include / exclude rules.
span_events: enabled: true attributes: include: exclude:
- Rename transaction trace segment parameter key from uri to http.url and rename trace key from database_name to db.instance.
Fixes
- Fixes an issue where Akka HTTP instrumentation can cause higher than normal memory usage when an async Directive is used in the route for an Akka HTTP based app. This can also result in mis-named transactions for any paths underneath the custom Directive.
Improvements
- The 'request.uri' attribute is now included in Transaction events and corresponding Transaction Error events. As a result this attribute can now be queried in New Relic. It may be excluded via the exclude list in the attributes section of the yaml config file. It is also excluded when High-security mode is enabled.
- Distributed Tracing can now be enabled at the same time as auto app naming. Each application created by this setting will share an event reservoir for Distributed Tracing.
- Updates Akka HTTP instrumentation to support the newest version of Akka HTTP, 10.1.5 and above.
Fixes
Fixes a possible NullPointerException that could occur in Hystrix instrumentation and propagate into application code.
Fixes a bug where usage of the HttpsURLConnection getInputStream() method could cause some scoped external metrics to be double-counted.
Fixes an issue that prevents the agent from connecting to an HTTP proxy that does not requires a username or password.
When configured to use an HTTP proxy by using proxy_host and proxy_port, the agent would look for proxy_username and proxy_password. If those weren't provided, the agent would use an empty string for proxy_username and proxy_password.
Prevents unnecessary dependencies from showing up in the newrelic-agent pom
Fixes deadlocks occurring in agent 4.7.0 that were caused by instrumentation of classes in the
sun/nio/cs/.*
packageFixes an issue where custom jmx metrics with '.'s in the attribute name would not get recorded.
Fixes
- Fixed an issue where the agent would break webpage rendering by inserting New Relic Browser monitoring javascript into the
<header>
tag of pages which were missing<head>
tags. - Certain frameworks, like Spring Cloud Gateway, triggered a bug in the Spring webflux instrumentation, causing transactions to stay open until they timed out. This bug resulted in more memory pressure and looked like a memory leak. This has been fixed in this release.
- Fixed an issue where the agent would stop reporting to New Relic following a ForceDisconnectException and accumulate transaction data resulting in OutOfMemory Exceptions.
- The agent now validates that app_names only contains three application names. If the agent is configured to report more than three application names, the agent will log a warning message and stop reporting to New Relic.
- When a custom WSRequestFilter is used that modifies an outbound play-ws request, the agent would report overly long segments due to Segment timeouts and will also result in a loss of External/ metrics. This has been fixed.
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.