Note
If you are using Akka Http 10.x, use this 3.44.1 release rather than 3.44.0.
Bug Fixes
- Fixes an issue where an Akka HTTP 10.x application could fail at runtime with a
NullPointerException
.
Known Issue
This release contains a bug that could cause an Akka HTTP 10 app to fail at runtime with a NullPointerException.
Please use version 3.44.1 instead.
Improvements
- Supports Play 2.6, Akka HTTP 10, and Scala 2.12.
The agent now provides instrumentation for Play 2.6.x. It also provides instrumentation for Akka HTTP 10. It supports Scala 2.12.x, so Play and Akka HTTP transactions show full detail, including async activity using Scala Promises and Futures.
- Lowers overhead for Play, Akka, and Scala.
This agent release imposes lower overhead for applications that use Play, Akka, and Scala. The reduction in overhead will be most notable in lightweight applications and microservices.
Unlike previous versions of the agent, by default the agent will not report Scala Futures as transaction segments, and those Futures will not contribute to the transaction’s reported Total Time. For most customers, this change will provide more concise information in transaction trace details, with no loss of insight. If those segments are valuable to you, and you are willing to incur higher overhead, you can enable that instrumentation with the following setting:
scala_futures_as_segments: enabled: true
Bug Fixes
- The 3.43.0 version of the agent caused Tomcat to report a
ClassFormatException
error at startup. The error did not affect the application or agent. - High-throughput applications with daily logging enabled and a specified log limit could cause log files to grow without bound.
- The agent could leak memory when instrumenting the Ning Async Http Client.
- Akka HTTP content type was not reported.
Improvements
Java 9
The Java agent can now be run with Oracle Java SE 9! You can run your applications on the Java 9 runtime JVM, and run applications compiled at the Java 9 language level.
By default, this release of New Relic's Java agent does not support applications configured for the new Java 9 modular mode, such as Jigsaw. In order to run in this mode with the agent, your application must be configured to require the
java.sql
module through one of these two options:- Add
requires java.sql;
to yourmodule-info.java
class - Use the
--add-modules=java.sql
command line flag
- Add
Improvements
Hystrix
With this release, the Java agent now supports Hystrix version 1.5.
Improved metadata collection for cloud providers
The agent now collects additional metadata when running in AWS, GCP, Azure, and PCF. This information is used to provide an enhanced experience when the agent is deployed on those platforms.
Bug Fixes
- Fixed bug that caused agent to not report error rate metrics. The UI would show application errors, but error rate would show up as 0%. This was introduced in 3.38.0.
- Improved Hystrix transaction reporting to better handle cases where an Observable is created that never executes.
- Fixed an issue where JAX-RS subresources would not be picked up for transaction naming, resulting in an incorrect or incomplete transaction name.
- Fixed a bug with DataNucleus that was preventing instance level and query information from being picked up.
- Fixed a bug that caused the agent to report external calls made with Commons HTTPClient as "unknown host".
Known Issues
Fixed in 3.44.0
- High-throughput applications with daily logging enabled and a specified log limit could cause log files to grow without bound.
- The agent could leak memory when instrumenting the Ning Async Http Client.
- Akka HTTP content type was not reported.
Fixed in 3.46.0
- In rare cases, a Vert.x application running this version of the agent can deadlock.
- Usage of the
setNull()
method on the JDBC interface now reports upnull
in the query string sent to New Relic instead of incorrectly reporting up thesqlType
as the value. - JVM crash that can occur when running the Java agent with the non-default spring-aop-2 instrumentation enabled.
Improvements
Vert.x
The Java agent now provides visibility into your applications built using the Vert.x toolkit (supported versions 3.3.0 through 3.4.2). 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.
Slick
With this release, the Java agent now supports Slick 3.2
API
Added ExtendedRequest API class to report content-length for HTTP responses. See Transaction.setWebResponse API for more details.
Bug fixes
- Fixed bug in Netty instrumentation that cause erroneous reporting of
NettyDispatcher
transactions. This affected transactions responding large incoming requests. - Fixed bug that caused agent to not report error rate metrics. The UI would show application errors, but error rate would show up as 0%. This was introduced in 3.38.0.
Improvements
- DynamoDB The Java agent now provides visibility into your applications’ usage of DynamoDB when using the client versions 1.11.106 and greater. You will see the calls in the application breakdown, in trace details, on the Databases page, in Transaction maps, and in Service maps.
- Solr With this release, the java agent now supports Solr versions 6.5.0+.
Bug Fixes:
- Fixed an instrumentation gap that prevented agent from capturing instance-level information about database queries for non-blocking IO driver configurations.
- Fixes an issue where usage onCompleted handler(s) with the ning async http client could cause a transaction to end too early, resulting in missed instrumentation.
Fixes:
- Fixed an issue in which the agent could in rare cases send a raw SQL query as a transaction attribute when an error was thrown
Bug fixes
- Fixed an issue in which setting "agent_enabled" to false in newrelic.yml caused an IncompatibleClassChangeError in the application on startup. The agent can now be disabled without side-effect.
- Fixed an issue where the agent throws an exception if null keys or values are passed to the recordCustomEvent() API. The agent now ignores these null values.
- Fixed a rare issue where the agent throws a NullPointerException in the application during JDBC calls. The agent now reports these calls but may report an “Unknown” database.
- Fixed an issue where a VerifyError is thrown in the application code when using Spring or JAX-RS annotations on a Kotlin method with a default parameter.
- Fixed an issue where external HTTP metrics could be reported outside of a transaction when using HttpURLConnection. The agent now ignores these calls.
Improvements
Expected Errors This release provides you with several flexible error configuration options to control how your errors are reported. With this addition, you can now configure certain exceptions that you expect your application logic will throw. These “expected errors” will not be counted towards your application error rate and Apdex; you will only be alerted on errors that truly affect the health of your application. Expected errors can be configured by exception class or HTTP response code. When specifying an exception class, you can provide an error message to match. See the documentation for details.
Custom CA Bundle
A path to a custom SSL certificate bundle can now be specified in the agent configuration by using the following top level configuration:
ca_bundle_path: /path/to/ca/cert/bundle.pem
Fixes
- Fixed a bug where applications running on Tomcat could see duplicated or misnamed transactions for async endpoints.
- Fixed a bug that caused transactions to report with an inflated apdex. The affected transactions had to meet the following conditions:
- A status code >= 400
- No error set on the transaction
- markResponseSent() or addOutboundHeaders() was not called from the API In this case, the agent will now consider that transaction call to be frustrating for the purposes of calculating apdex.
- Fixed a bug where the loaded class count on the JVM tab is reported as a much larger value than the actual number of loaded classes. In certain circumstances this bug can cause memory and CPU over-utilization.
- Fixed a bug where response times in ServletRequestListener.requestInitialized() would incorrectly appear much larger than the actual values when using JBoss.
Improvements
- Async APIs
This release adds new APIs for instrumenting asynchronous work. If your transactions have asynchronous work (such as database queries or external calls) that is not automatically monitored by the Java Agent, you can use the APIs to link that work to your transactions. For more information, see the documentation. - OkHttp 3.6
This release adds support for OkHttp 3.6.x. You will now see OkHttp 3.6 calls as external calls in New Relic.
Fixes
- Fixes an issue where applications running on Tomcat 8.5 could see duplicated or misnamed Transactions for async endpoints.
- Fixes an edge case issue where users of Spring AOP can get an UndeclaredThrowableException when using the Java Agent.
- Fixes root and current working directory jars not showing up in the UI.
- Fixes an issue which prevented the Solr updates and Solr caches tabs from displaying in the New Relic UI for applications that are reporting Solr data for the first time.