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.

Wednesday, August 8, 2018 - 12:08 Download

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 Explorer's 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 Explorer's 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.

  • 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 and distributed_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.
Tuesday, July 31, 2018 - 10:00 Download

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 stanza 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.
Tuesday, June 12, 2018 - 14:24 Download

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.
Wednesday, May 2, 2018 - 16:46 Download

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 and INTO keywords.
Thursday, April 19, 2018 - 10:22 Download

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.
Wednesday, April 4, 2018 - 09:40 Download

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.

Fixes

  • Fixes an issue where the Thread Profiler could fail to report. In this case, the agent logged a java.lang.StackOverflowError
Monday, March 12, 2018 - 07:29 Download

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
Wednesday, March 7, 2018 - 13:20 Download

Bug fixes

  • A security update corrects an issue where the agent may report DB query results to New Relic or re-issue an SQL statement. For information on the bug fix, see the security bulletin.

Known Issues

Fixes in 3.48.0

  • Fixes an issue that in rare cases prevented Play async transaction tracking
  • Fixes a memory leak that could occur in Spymemcached instrumentation
  • Fix to disable attributes.include lists when High Security Mode is enabled
  • Fixes an issue where errors outside of a transaction did not contain custom attributes on the event
  • Fixes an issue that caused the UI to not display errors that had error messages over 255 bytes
  • Fixes in 4.0.0
  • Fixes an issue where the Thread Profiler could fail to report. In this case, the agent logged a java.lang.StackOverflowError

Fixes in 4.1.0

  • 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.
  • Fixes an issue where the agent could not parse database statements that included the IGNORE and INTO keywords.

Fixes in 4.2.0

  • Fixes a bug where transactions were being kept alive for too long when application is under heavy GC, causing inaccurate throughput to be reported.
  • Fixes 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.
  • Fixes 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.
  • Fixes a bug where Jersey Client and HttpUrlConnection could be double instrumented, resulting in inflated external call count.
  • Fixes a bug where the total time and response time for a long running task could be misreported.
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.

Pages