Java Release Notes

Recent Java agent release notes are listed below. If you would like a release that has been used extensively with a list of known issues, see Established releases (Java) for download link and version information.

Monday, February 5, 2018 - 11:31 Download

Improvements

  • Jersey Client

    The agent now provides instrumentation for Jersey Client versions 1.x and 2.x. You will see your calls using the Jersey Client APIs as Externals in New Relic, whether you are using the synchronous or reactive client API.

  • request.uri collected as an agent attribute

    You can now control the collection of request.uri on errors and transaction Traces you would other attributes. For more information on agent attributes see here.

Fixes

  • Fixes a bug in Jersey 2 instrumentation where external segments could time out, causing an abnormally large "total time" for a transaction. This bug would occur if a client disconnected while being sent a response or if an unstable network is in place where an IOException occurs during response.

  • In some cases, the agent may have incorrectly reported the transaction thread name to New Relic as "New Relic Token Expiration Handler".

  • Agent was incorrectly bundling javax.xml and jregex packages

  • Fixes an issue in the Wildfly instrumentation that could cause async servlet transactions to go unreported.

Monday, January 8, 2018 - 09:00 Download

Improvements

  • Websphere 9

With this release, the Java agent now supports Websphere 9, both Traditional and Liberty Profile.

More information on how to install and configure the Java agent on Websphere can be found here: IBM WebSphere Application Server.

Bug Fixes

  • Fixes a potential deadlock scenario caused by the Java agent in high throughput applications running on Vert.x.
  • Usage of the setNull() method on the JDBC interface now reports up null in the query string sent to New Relic, instead of incorrectly reporting up the sqlType as the value.
  • Fixes a JVM crash that can occur when running the Java agent with the non-defaultspring-aop-2 instrumentation enabled.
Monday, December 11, 2017 - 13:04 Download

Improvements

  • RabbitMQ

The agent now provides instrumentation for RabbitMQ 5.0.

Note:

  • This release changes instrumentation for all supported versions of RabbitMQ to use the exchange name instead of routing keys for the transaction name and produce/consume metrics. This should provide more meaningful transaction names, but will change what transactions you see in New Relic.
  • Now reports queue purge
  • No longer reports misleading MessageBroker consume metric for callbacks/message listeners
  • Adds message properties to tracer attributes, and a configuration to disable them:

      message_tracer:
        segment_parameters:
          enabled: false
    

Bug Fixes

  • Exceptions thrown within scala Future/CallbackRunnable code could cause inaccurate transaction times
  • Deadlock could occur when tracking asynchronous activity in Vert.x.
Tuesday, November 7, 2017 - 14:42 Download

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.
Monday, November 6, 2017 - 11:15 Download

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.
Wednesday, September 27, 2017 - 11:24 Download

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 your module-info.java class
    • Use the --add-modules=java.sql command line flag
Monday, August 28, 2017 - 13:30 Download

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 up null in the query string sent to New Relic instead of incorrectly reporting up the sqlType as the value.

    • JVM crash that can occur when running the Java agent with the non-default spring-aop-2 instrumentation enabled.

Tuesday, July 25, 2017 - 11:06 Download

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.

Monday, June 26, 2017 - 10:58 Download

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.
Tuesday, May 30, 2017 - 14:23 Download

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
Tuesday, May 23, 2017 - 10:13 Download

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.
Monday, April 24, 2017 - 09:30 Download

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.
Wednesday, March 29, 2017 - 11:25 Download

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.
Wednesday, February 15, 2017 - 09:55 Download

Improvements

  • APIs

    This release adds a number of APIs that will allow you to instrument and get expanded visibility into frameworks, libraries, and any custom code that New Relic does not automatically instrument. In addition to instrumenting your web frameworks, you can also instrument calls to and from messaging systems, database calls, and external calls! By passing context about your code to the APIs, you will get the same reporting, including cross application tracing, that you get with New Relic’s built-in instrumentation.

  • Solr

    This release adds support for Solr versions 5 and 6 (up to and including version 6.3.0).

Fixes

  • Fixes a bug that prevents an application from starting up when a JAX-RS annotated method contains more than 8 parameters.

  • Fixes an issue that affected Spring and JAX-RS applications compiled with the Java 8 flag javac -parameters. The issue would cause the application to throw a java.lang.reflect.MalformedParametersException exception.

  • Fixes bug that affected applications implementing JAX-RS endpoints using static methods.

  • The agent now reports WildFly dispatcher name and version.

  • Fixes a bug in which Queue Time could be misreported on the Overview page for customers injecting the X-Queue-Start or X-Request-Start HTTP headers. This fix brings the Java Agent into compliance with the behavior of other New Relic Agents.

  • Fixes an issue in which custom Hystrix Commands that are subclassed multiple times in Groovy cause an application to throw an exception on startup.

Tuesday, January 17, 2017 - 07:00 Download

Note

If you are using Spring AOP, Jersey, or any JAX-RS framework, use this 3.35.2 release rather than 3.35.0 or 3.35.1.

Fixes

  • Fixes an issue where an application can fail to start with a:

    java.lang.VerifyError: Bad local variable type error

    when using Spring AOP, Jersey, or any JAX-RS framework with Java Agent 3.35.0 or 3.35.1.
Thursday, January 12, 2017 - 16:15 Download

Known Issue

This release contains a bug that could cause the app to fail with a VerifyError. Please use version 3.34.0 instead.

We will release a fix for the issue when we have thoroughly tested the fix for edge cases.

Fixes

  • Fixes an issue where an application can fail to start with a ClassFormatError when using Spring, Jersey, or any JAX-RS framework with Java Agent v3.35.0.
Wednesday, January 11, 2017 - 11:35

Improvements

Known Issue

Several customers have reported an issue with this release in which the app fails with a ClassFormatError. For this reason, this release is not recommended and has been removed from New Relic's download site. Please use release 3.34.0 instead.

We keep the note here because the 3.35.0 is still available on the Maven Central Repository.

We will release a fix for the issue as soon as possible.

Changes

  • JAX-RS/Jersey 2

    This agent release officially adds support for JAX-RS 1.1-2.0.

    The release instruments the @Suspend annotation when using the Jersey 2 implementation of JAX-RS.

  • OkHttp 3.5

    This release updates our instrumentation to cover OkHttp 3.5.

Fixes

  • Fixes an edge case in Spray Client instrumentation where a NullPointerException was being thrown into customer logs

  • Fixes a potential StackOverflowException from Netty instrumentation when calling ServerBootstrap.bind() many times

  • Fixes a bug that prevented display of JMX metrics for Oracle WebLogic Server 12.2

  • Fixes issue where SQL parsing would throw a StackOverflowError and prevent large database statements from being sent up to New Relic

  • Improve performance of complex SQL statement parsing in the agent, reducing overhead for apps that make many SQL calls

Wednesday, December 14, 2016 - 13:06 Download

Improvements

  • Solr

    The agent now reports database instance information for Solr. With the additional database instance information, transaction traces and slow query traces will provide the database server and database name for the queries displayed.

  • IBM JDK 8 Support

    The newest versions of WebSphere Application Server and WebSphere Liberty Profile ship with the IBM JDK 8. This release is compatible with IBM JDK 8.

Fixes

  • Fixed an issue in which asynchronous instrumentation could interact with instrumentation for JDBC ResultSet or a limited set of other frameworks, leading to loss of transaction reporting.

  • Fixed an issue in which transactions that executed the Spring Framework error handler could be given a generic name. These transactions will now retain their previously-assigned name.

  • Fixed a bug introduced in 3.33.0 where use of the X-Ray sessions feature could cause the Agent to stop reporting transactions.

  • Fixed a bug in the agent that prevented Error Events from linking to corresponding Traced Errors when created outside of a transaction

  • Fixes a Tomcat-specific issue where Transactions would incorrectly report extremely long response times in the ServletRequestListener.requestInitialized() method.

  • Improved metric grouping issues in several frameworks including Akka tell calls.

  • Fixed bug in noticeError API. The agent now includes custom attributes in errors when the API is called outside a Transaction.

  • Fixed an issue where custom XML instrumentation could cause a null pointer exception in application code when custom attributes are set for a method that passes a null parameter.

  • Fixed an issue in the Agent API method recordCustomEvent() that could cause loss of custom events created using this API. Customer who do not use the recordCustomEvent() API are not affected. Previously, unexpected argument types could result in the loss of both the event and additional custom events recorded in the same 1-minute period. As a result of this fix, users of the recordCustomEvent API may discover that events that have never been visible in the Insights API become visible.

Known issues

  • Fixed in 3.35.2

    • Applications that use the Spray Client instrumentation may throw a NullPointerException into customer logs
    • Applications that use the Netty instrumentation may get a StackOverflowException when calling ServerBootstrap.bind() many times
    • Oracle WebLogic Server 12.2 applications will not display WebLogic specific JMX metrics
    • SQL parsing may throw a StackOverflowError and prevent large database statements from being sent up to New Relic
  • Fixed in 3.36.0

    • Queue Time may be misreported on the Overview page for applications injecting the X-Queue-Start or X-Request-Start HTTP headers
    • Applications that have custom Hystrix Commands that are subclassed multiple times in Groovy can cause an application to throw an exception on startup
  • Fixed in 3.37.0

    • Solr: Applications that use Solr and have reported to New Relic APM previously with an agent version prior to 3.34.0 will not display the Solr page
Wednesday, November 2, 2016 - 14:06 Download

Improvements

  • Database instance reporting

    The agent now reports database instance information for most supported databases. With the additional database instance information, transaction traces and slow query traces will provide the database server and database name for the queries displayed. You will see instance-level information when connecting by using the following drivers:

    • Any JDBC driver, including those in our compatibility doc.

    • DataStax Cassandra driver (2.1.2, 3.0 to 3.1).

    • Jedis Redis driver (1.4 to 2.9).
    • Mongo (2.12.0 to 2.13.3, 3.1 to 3.3).
    • Spymemcached (2.11 to 2.12). Note that instance-level information is not reported for calls to the getBulk API method..

Bug fixes

  • Fixed a bug in Play 2.5 instrumentation that could cause the agent to report shorter response times when using Action.async.

  • SQL stored procedure names are now reported in more edge cases such as “exec @param = stored_procedure”

  • Fixed an issue where explain plans were not being executed for versions 9.0-9.3 of PostgreSQL.

  • Fixed an issue where the agent could cause a Mule application request to fail with a NotSerializableException reported in the application log.

  • Fixed an issue where JVM versions that do not support ThreadCpuTime() would throw an UnsupportedOperationException, preventing the JVM from starting.

  • Fixed a potential memory leak in versions of Jetty 7 and 8 when using CometD.

  • Fixed an issue where the Hystrix toObservable method was double counting metrics on newer versions of Java 7 and all versions of Java 8.

Monday, September 19, 2016 - 14:31 Download

Improvements

  • WebLogic

    This release adds official support for WebLogic versions 12.2.x

  • Performance Improvements

    Improvements in Java agent startup time, particularly on modular ClassLoader architectures (such as JBoss)

Fixes:

  • Fixed bug in spymemcached instrumentation that would incorrectly name segments in transaction traces that contained “get-and-touch” operations.

  • Improved Play 2.5 instrumentation

    • Fixed memory leak for large POST requests.
    • Fixed incorrect response times. Previously, large uploads could cause inflated response times.
    • The agent now tracks PlayRequestHandler and no longer shows the short-lived NettyDispatcher transactions.
  • Fixed a bug that could cause cross application tracing to display URLs as “Unknown” in transaction traces when the URL did not include the port number.

  • Fixed a bug in Jetty 9.3 instrumentation where transactions were not reported and memory was leaked if an incoming async request was wrapped by a framework or Jetty itself.

Pages