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.

2017, February 15 - 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.

2017, January 17 - 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.
2017, January 12 - 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.
2017, January 11 - 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

2016, December 14 - 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.

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.

2016, November 2 - 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.

2016, September 19 - 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.

2016, August 10 - 15:07 Download

Fixes

  • Fixed a bug that caused a StackOverflow exception for drivers that execute a query on Connection.getMetaData().

Note: This issue was introduced in Java agent version 3.30.0.

2016, August 3 - 12:17 Download

Improvements

  • Mule ESB 3.6-3.8 including the new HTTP Connector

    This release adds instrumentation for Mulesoft Mule ESB Server versions 3.6-3.8, including the new HTTP Connector made available in Mule 3.6. This release continues to support the old HTTP Transport. Mule ESB Server instances will appear as "dispatchers" on the overview page and the JVM metrics page. Requests to an HTTP (operation-based) Connector will show in New Relic as web transactions. All of the usual features of New Relic APM are supported including alerting, error reporting, JMS puts and takes, cross application tracing, transaction traces, key transactions, external services, and database call reporting.

  • OkHttp client 3.0-3.4

    This release adds instrumentation for OkHttp client for versions 3.0-3.4. Both synchronous and asynchronous calls are supported, as well as the usual features for HTTP clients in New Relic APM such as cross application tracing and the external services page.

  • Akka HTTP 2.4.5

    The Java agent now reports and names transactions received through Akka HTTP 2.4.5, in addition to previously available Akka HTTP support.

  • Spring transaction naming

    The java agent now supports naming transactions based on the path element of Spring RequestMapping annotation.

Fixes

  • Fixed an issue that was preventing Jetty JMX threads metrics from being pulled in later versions of Jetty 9.X.
  • Fixed bug in the recordMetric API that in rare cases could start an unwanted long running transaction.
  • Fixed a memory leak in the Async Servlet instrumentation.
  • Fixed a bug in the setRequestAndResponse API that could throw a java.lang.NumberFormatException in the customer’s application when the circuit breaker trips.
2016, July 20 - 15:24 Download

Fixes

Fixed a security issue that could send external HTTP request parameters to New Relic via transaction traces for applications that do all of the following:

*For Java agent versions 3.6.0-3.25.0, this issue only affects cross-application traces.

Recommended for applications that may include sensitive information in external service call request parameters.

If you can’t upgrade the agent immediately, there are a few workarounds:

You can also delete existing transaction traces.

2016, June 28 - 09:55 Download

Improvements

  • Mule ESB 3.4 - 3.6

    This release adds instrumentation for Mulesoft Mule ESB Server versions 3.4 through 3.6. Requests to an HTTP Transport will show in New Relic as web transactions. Mule ESB Server instances will appear as "dispatchers" on the overview page and the JVM metrics page. All of the usual features of New Relic APM are supported including alerting, error reporting, JMS puts and takes, cross application tracing, transaction traces, key transactions, external services, and database call reporting.

    NOTE: The newer HTTP operation-based Connector is not yet supported.

  • Play 2.5

    This release adds instrumentation for the Play 2.5 framework. The previous Java Agent release supports versions of Play up to 2.4.

  • Cassandra async 2.1.2+ and 3.x

    This release adds instrumentation for asynchronous queries in versions 2.1.2+ and 3.x 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.

  • Async Http Client 2.x

    This release adds instrumentation for external service calls made using Async Http Client versions 2.x. If the called external service is also running New Relic, you will see cross application tracing details as well. This instrumentation will also capture external calls made from Play WSAPI (which uses Async Http Client).

  • Transaction traces for key transactions

    If you set an Apdex value for a key transaction, the agent will now capture transaction traces based on that key transaction's Apdex value if it's smaller than the application’s Apdex value.

  • JDBC performance and overhead improved

    This release offers better performance and lower overhead of JDBC instrumentation, especially in situations with large numbers of connections.

Fixes:

  • Fixed multiple issues related to Java Agent logging including:

    • ClassCastExceptions thrown into customer application logs
    • Agent logging being diverted into customer application logs
  • Fixed a bug where transactions could timeout during agent harvest, resulting in missing metrics and logging: "Traced activity timed out after 600 seconds. The traced_activity_timeout configuration parameter can be used to adjust this timeout.”

  • Resolved Metric grouping issue in Spray/Akka tell instrumentation. The agent now names temporary actors "temp".

  • In rare cases a ClassCircularityError could be induced by the agent when running with a custom security manager.

  • Fixed issue where a database connection can get labeled as "JDBC" instead of the more specific, supported database type such as "MySQL" or "PostgreSQL". This issue specifically affects customers running with a proxying or delegating JDBC connection.

2016, May 24 - 11:39 Download

Improvements

  • JDBC instrumentation

    • JDBC ResultSet instrumentation performance has been improved.
    • Instrumentation has been added for:
    • i-Net Merlia 7.0.3 database driver
    • Generic JDBC drivers
  • Cassandra

    This release adds instrumentation for the Cassandra Datastax 3.0 Driver including slow query support. You’ll see relevant breakdowns in the overview chart, entries in the Databases tab, and segments in transaction traces.

    Note: Uses of the client's async API are not currently supported.

Fixes:

  • Fixed a bug which caused some applications that use Play and Ning AsyncHttpClient to miss transactions.
  • Fixed an issue which would cause the thread profiler to not report data while profiling some Scala classes.
  • Fixed a rare bug where a RuntimeException is thrown during class transformation which can prevent some instrumentation from being applied.
  • Fixes a rare case where Tomcat ClassLoaders could leak memory when using a JDBC driver bundled in your application after reloading a web application.
2016, April 20 - 09:13 Download

Improvements

  • Cassandra

    This release adds slow query tracking to Cassandra queries made via the Datastax driver. You’ll now see slow CQL queries on the Databases page and within Transaction Traces. You must add the following to your newrelic.yml configuration to enable this feature in High security mode:

      transaction_tracer:
          slow_query_whitelist: 
           'com.newrelic.instrumentation.cassandra-datastax-2.1.2'
    
  • MongoDB

    The Java agent now reports synchronous calls made via MongoDB Java driver 2.14. You will see MongoDB represented on the Overview page, on the Databases page, and in Transaction traces. Note: The asynchronous driver is not yet supported.

  • Apache Tomcat

    This release adds support for Tomcat 8.5

  • Akka

    • This release adds support for Akka forwarding and Akka broadcasting. The agent will now trace messages broadcast or forwarded to actors.
    • When the system sends a message to an Actor, the agent now reports the name of the actor system that sent the message. Previously, the agent reported “deadletters” under these circumstances.
  • Async performance

    This release adds performance enhancements for asynchronous frameworks, especially Hystrix. Performance in Hystrix will noticeably improve for most applications, and will be up to 3x faster when tracing low-latency requests (response time <3ms). Performance for low-latency Play applications will be up to 30% faster.

  • JDBC

    This release adds support for the following JDBC drivers:

    • MySQL 6.0.2 and higher
    • i-Net Oranxo 3.06
    • i-Net MERLIA 8.04.03 and 8.06

Fixes

  • Fixed a bug that could cause Akka Http instrumentation to throw a NullPointerException into customer code.

  • Fixed a bug in the Spymemcached instrumentation that would report operations with the name “None” instead of the correct operation name.

  • Fixed a bug that could cause highly asynchronous applications to experience a memory leak in the NewRelic TransactionService.

2016, March 30 - 13:24 Download

Improvements

  • Spymemcached

    The Java agent now provides visibility into your applications’ usage of Memcached when using the Spymemcached client versions 2.11 to 2.12. You will see the calls in the application breakdown, in trace details, on the Databases page, in Transaction maps, and in Service maps.

  • JDBC Drivers

    This release adds support for the following JDBC drivers:

    • INet Oracle Driver (Oranxo) 3.14
    • Sybase (jConnect) JDBC 3 driver

Fixes

  • Fixed an issue where the agent treated HTTP headers as being case sensitive, causing CAT to miss under certain conditions.

  • Fixed an issue where error data could be dropped, causing 413 status code errors to be reported in the agent log.

  • Fixed a bug in spray-http and akka-http routing libraries where response times and/or route names could be reported incorrectly when using Futures within the route.

  • Fixed various issues related to the proper handling of multibyte character encoding.

  • Fixed a bug in Java agent version 3.26.x that could cause the Thread Profiler to time out.

  • Fixed a bug where an error could get printed to the agent log when making SQL queries from an asynchronous framework.

Notes

In support of an upcoming feature, the Java agent is now capable of reporting class metadata including class method signatures, method annotations, class annotations, field annotations, field types, and field names.

This reporting is off by default and can be explicitly disabled in the agent by setting the following property in your newrelic.yml configuration file:

  command_parser:
    blacklist: send_module_metadata
2016, February 25 - 10:34 Download

Improvements

  • PostgreSQL

    This release adds improved support for PostgreSQL 8.0+ with jdbc3+. All of these versions now include support for explain plans.

2016, February 23 - 11:47 Download

Improvements

  • Spray Client

    The agent now identifies external calls when Spray Client is used. You will see your Spray Client calls with the hostname and port of the destination. The calls also have support for Cross Application Tracing, and are shown in Service Maps and Transaction Maps.

  • The agent now tracks Futures started in Spray routes.

  • The agent now identifies transactions when spray-can is used without spray-routing.

  • Slick

    The agent now tracks async activity created by Typesafe/Lightbend's functional-relational-mapper, Slick. If the underlying database driver is supported by the agent the database activity will be traced.

  • Improvements for JDBC

    The Java agent’s JDBC instrumentation now provides more consistent and complete data for supported JDBC drivers. The Java agent supports the following drivers:

    • MySQL 5.1.4 - 5.1.x
    • PostgreSQL 8.2-504 - 9.4-1206 (jdbc4 and jdbc41 drivers only)
    • Oracle ojdbc14, ojdbc5, ojdbc6, ojdbc7
    • Microsoft SQLServer 2.0 - 4.2
    • jTDS 1.2 - 1.3.x
    • DB2 9.1 - 10.x
    • Derby 10.6.1.0 - 10.x
    • H2 1.0.x - 1.4.x
    • HSQL 1.7.2.2 - 2.x
    • MariaDB 1.1.7 - 1.3.x

    Note Previous versions of the Java Agent had partial “generic” support for other JDBC drivers. The new, improved JDBC instrumentation replaces the “generic” JDBC instrumentation.

Fixes

  • Fixed a bug where CXF would name transactions based on auto-generated proxy classes. The agent now normalizes CXF transaction names.

  • Fixed a bug in EJB instrumentation that could cause a NullPointerException in application code.

  • Fixed a bug where the EJB instrumentation erroneously set transaction names. In this version, the agent records a metric.

  • Fixed a bug in the Cross Application Tracing API that caused Application Response time to be attributed to other transaction time, and prevented linking of transaction traces when doing CAT.

  • Fixed a bug in request queueing calculations where queueing time could show up as a steadily increasing value instead of the correct time.

  • Fixed a bug that prevented HttpURLConnection External metrics from reporting on the IBM J9 JVM.

  • With Spray routing, fixed a bug that incorrectly set the transaction name of similar route names or set them to "Unknown Route".

  • Fixed a bug where some transaction traces would report external segments for non I/O calls in Apache HttpClient.

  • The Java Agent will now read Cross Application Tracing HTTP header names regardless of case.

  • Fixed a bug that could cause cross application tracing between the New Relic Java Agent and non-Java New Relic Agents to fail.

Known Issues

  • Postgres JDBC

    This release does not contain support for some versions of the PostgreSQL jdbc3 drivers supported in previous releases. We recommend that you use 3.26.1.

2016, January 18 - 13:34 Download

Improvements

  • Performance improvements

    The Java agent now starts up to 50% faster. Your applications will be available that much sooner.

Fixes

  • In some cases JAX-RS annotations on interfaces were not being observed, causing transactions using JAX-RS services to be named on the servlet rather than the web servicepath and method.
  • Fixed an issue that prevents Spray and Akka-HTTP instrumentation from applying when using Scala 2.10.
  • Fixed an issue that caused Play 2.x requests to produce empty responses when the circuit breaker is tripped.
  • Fixed an issue where setting enable_custom_tracing to false could inadvertently disable Netty instrumentation.

Known Issues

  • Fixed in 3.29.0

    • Applications that use Play and Ning AsyncHttpClient may miss transactions.

    • The thread profiler may not report data while profiling certain Scala classes.

  • Fixed in 3.28.0

    • Fixed a bug that could cause Akka Http instrumentation to throw a NullPointerException into customer code.
  • Fixed in 3.27.0

    • Fixed an issue where the agent treated HTTP headers as being case sensitive, causing CAT to miss under certain conditions.

    • Fixed various issues related to the proper handling of multibyte character encoding.

  • Fixed in 3.26.x

    • CXF instrumentation can name transactions based on auto-generated proxy classes. Later agents now normalizes CXF transaction names.

    • EJB instrumentation may cause a NullPointerException in application code, and erroneously set transaction names. In later versions, the agent records a metric.

    • The Cross Application Tracing API caused Application Response time to be attributed to other transaction time, and prevented linking of transaction traces when doing CAT.

    • Request queuing calculations could show queuing time as a steadily increasing value instead of the correct time.

    • HttpURLConnection External metrics may not report on the IBM J9 JVM.

    • Transaction traces may report external segments for non I/O calls in Apache HttpClient.

    • The Java agent will now read Cross Application Tracing HTTP header names regardless of case.

    • Fixed a bug that could cause cross application tracing between the New Relic Java agent and non-Java New Relic agents to fail.

2015, December 21 - 10:00 Download

Fixes

  • Fixed an issue that caused Play 2.x requests to produce empty responses when the circuit breaker is tripped.
2015, December 15 - 12:19 Download

Improvements:

  • MongoDB

    The Java agent now reports synchronous calls to the Mongo Java Driver 2.12 through 3.1. You will see the Mongo operations in breakdowns in the Applications Overview chart, entries in the Databases tab, and segments in transaction traces. Note: The asynchronous driver is not supported.

  • Akka HTTP and Spray

    The Java agent now reports and names transactions received through Akka HTTP 1.0, Akka HTTP 2.0 and Spray. Transactions are named intuitively based on route DSLs. This instrumentation also supports Cross Application Tracing from calling systems. With our previously released support for Akka, your Akka HTTP and Spray applications will now include activity of those transactions all the way through your actor systems.

Fixes:

  • In rare cases the Java agent's EJB instrumentation could cause a StackOverflowException to appear in application logs.
  • In some cases the Java agent's Netty instrumentation could throw a NullPointerException to application code.
  • Improve performance when using Cross Application Tracing and a large number of threads.
  • In some cases the transaction would not be reported when using Akka with mutable messages.

Known Issues:

  • Play 2.x requests will produce empty responses when the circuit breaker is tripped. We recommend Play 2.x users disable the circuit breaker when using Java agent versions 3.22 or higher.
2015, December 1 - 11:38 Download

Improvements

  • Hystrix instrumentation

    This release contains support for versions 1.0.2 through 1.4 of the Hystrix framework. You will now see timing information related to each Hystrix Command's run and getFallback methods. Chained Hystrix commands will be linked into one transaction.

Fixes

  • This release fixes a bug in New Relic's Cross Application Tracing (CAT) that could cause incorrect service and transaction maps.

    The problem would happen when non-identical applications, with identical transaction names, would appear to be communicating (in the Transaction / Service maps), when in fact, they were not.

    Note: Using a combination of pre-3.23.0 and 3.23.0+ can result in external calls between the old and new agents to not show up in the map. To fix this, upgrade all of your agents to 3.23.0+ at the same time

  • Resolved an issue where an application running on Tomcat and containing a large number of static JSPs (5000+) could cause a memory leak within the agent.

Pages