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.

Thursday, May 14, 2015 - 15:49 Download

Improvements:

  • Redis

    Added support for the Jedis client versions 1.4.0 or higher. You can now see your Redis calls in breakdowns in the overview chart, entries in the Databases tab, and segments in transaction traces.

  • RabbitMQ

    Updated RabbitMQ instrumentation to support RabbitMQ 3.5 and higher.

  • Cross Application Tracing API

    Use the cross application tracing API when the agent does not provide cross application tracing support for your application. See the documentation

  • Play 2 Framework

    Improved instrumentation for Play controller classes.

  • Circuit Breaker

    Starting in this release, the New Relic Java agent detects when memory is nearly exhausted and trips a “circuit breaker” that limits the agent’s memory usage. The agent won’t report transactions while the circuit breaker is tripped, so throughput will be understated. In the rare case that the circuit breaker trips, the New Relic UI will provide more information. For more details, see the documentation.

  • Added configuration to disable Deadlock Detection

    Under very heavy load conditions with many threads, the Deadlock Detector service may slow response time. You can now disable this feature with the following setting:

      deadlock_detector:
        enabled: false
    
  • Reduced the memory overhead of the Java agent

Fixes:

  • Play 2 Framework

    The Java Agent now honors the segment_limit setting for async traces, and can now handle much deeper async traces. This is useful to decrease if you're experiencing slower response time or high memory overhead when executing large async transactions.

    Cross-application requests from other New Relic-instrumented applications will reliably appear in the App and Transaction maps.

  • The proxy_host name is no longer sent to New Relic.

  • Fixed issue where external transactions were reported twice when using HttpURLConnection. Previously, this caused throughput to appear doubled.

Tuesday, March 31, 2015 - 11:45 Download

Improvements:

  • Labels and Rollups

The New Relic Java agent now supports the ability to apply labels to applications, so that you can easily sort, filter, and page through all of the applications on your account's Applications list.

Configuration can be done in the newrelic.yml file:

    labels: Server:One;Data Center:Primary

More information on using labels to categorize your applications can be found in the New Relic APM documentation.

  • With this version of the Java Agent, you can update Custom instrumentation XML in the extensions folder and it will be reloaded within a minute.

Fixes:

  • Prior to this version, some thread profiles would time out and not display. Thread profiles will now complete reliably.

  • The Java Agent now works around IBM JVM bug IV25688. The agent will scale back a small amount of its instrumentation on old IBM JVMs to avoid inducing the bug. The workaround should leave most customers unaffected. Loss of instrumentation caused by the workaround can be fixed by upgrading the JVM to the latest service release.

Wednesday, February 25, 2015 - 11:23 Download

Improvements:

  • Synthetics transaction tracing

    New Relic Synthetics monitors your site from around the world. When you use Synthetics to monitor your Java application, up to 20 detailed transaction traces will now be captured every minute when the application is probed from Synthetics. To learn more about this feature, visit our documentation

  • EJB Session Beans

    The Java agent now monitors Enterprise Java Beans (EJB) 3.0 session beans. The agent instruments @Stateless and @Stateful EJBs, and those that extend java.ejb.SessionBean. The agent traces methods declared by corresponding interfaces annotated with @Remote and @Local.

  • Unified view for SQL database and NoSQL datastore products.

    The response time charts in the application overview page will now include NoSQL datastores, such as Cassandra and MongoDB,and also the product name of existing SQL databases such as MySQL, Postgres, Oracle, etc. For existing SQL databases, in addition to the existing breakdown of SQL statements and operations, the queries are now also associated with the database product being used. For NoSQL datastores, such as Cassandra and MongoDB, we have now added information about operations performed against those products, similar to what is being done for SQL databases.

    This new unified Databases page will enable the filtering of metrics and operations by product, and includes a table listing all operations.

    Because this introduces a notable change to how SQL database metrics are collected, it is important that you upgrade the agent version on all hosts.If you are unable to transition to the latest agent version on all hosts at the same time, you can still access old and new metric data for SQL databases, but the information will be split across two separate views.

  • Datastax Cassandra client

    Added support for the Datastax Cassandra client versions 2.1.2 or higher. This will include breakdowns in the overview chart, entries in the Databases tab, and segments in transaction traces. Note: uses of the client's async API will not be captured in transaction traces.

  • MongoDB client

    Added support for MongoDB client versions 2.12.0 up to but not including 3.0+. This will include breakdowns in the overview chart, entries in the Databases tab, and segments in transaction traces.

  • API Reported Errors

    API reported errors can now be prioritized on a transaction over tracer reported errors. Add the following config to allow prioritizing:

    error_collector:
      ignoreErrorPriority: false
    

Fixes:

  • The Java Agent may now capture traces for transactions that resulted in an error (4xx or 5xx response code). Prior to this release, the agent would only capture traces for successful responses.

  • Updated default newrelic.yml to use transaction_events.max_samples_stored instead of deprecated analytics_events.max_samples_stored property.

  • JBoss dispatcher reports correctly for clustered environments where jboss.home and jboss.home.dir are not set.

  • Resolved a bug which caused certain Jetty configurations to stop sending metric data.

  • Under very light load, the Agent could send incorrect transaction timestamps.

  • Fixed parsing error in log_file_count setting. Prior to this release, this setting produced one more log file than expected.

Tuesday, January 20, 2015 - 09:46 Download

Improvements:

  • Custom Insights events API

    In addition to attaching custom attributes to the events that the Java agent generates automatically for each transaction, you can now record custom event types into Insights with the new NewRelic.getAgent().getInsights().recordCustomEvent API.

  • The agent now captures and reports thread profiles in XRay Sessions for non-web transactions.

Fixes:

  • Incorrect JMS transaction names for users of Oracle ATG Web Commerce
  • In rare cases, application code would encounter a NoClassDefFoundError for one or more classes contained in the newrelic.jar.
Thursday, January 8, 2015 - 12:06 Download

Fixes

This is a bugfix release for the legacy Java SE5 version of the agent. Unless you are a Java SE5 user, use the latest version of the New Relic Java agent.

  • Fixed an issue that in rare cases could cause the agent to cease reporting data until JVM restart.

Known issues

  • X-ray sessions sometimes return no transaction traces. Many x-ray session runs can cause a memory leak.
  • Play framework

    • Higher overhead with Play 2 than later releases.
    • Does not work properly with Play 2.2
    • Counts akka.actor.ActorKilledException as an error.
    • Play transaction does not complete until timeout expires
    • When using Play, ignoreTransaction call does not take effect
  • In some cases running Weblogic, the Java agent fails certificate validation when connecting to New Relic. This may require a workaround.
  • This release contains some inconsistencies in the instrumentation of Hibernate across versions.
  • This release requires a workaround to use SSL with WebSphere.
  • Potential memory leak when app continually creates ClassLoaders.
  • Rare memory leak if agent does not report to New Relic for an extended period.
  • When running IBM JVM without WebSphere, you must set the sync_startup flag set to true in the common section of newrelic.yml: sync_startup: true.

Workaround

If you require a workaround for one of these issues, please open a ticket at support.newrelic.com.

Monday, December 22, 2014 - 15:58 Download

Improvements

  • Play 2 async activity is no longer tracked when transaction is ignored.
  • Reduced GC overhead when monitoring Play 2 applications.
  • Reduced memory usage when inspecting slowest SQL statements.

Config Changes

  • stack_based_naming now false by default.

    The stack_based_naming in the transaction_tracer stanza is now false by default. Stack-based naming caused significant overhead in many Scala applications, so it now must be set to true explicitly. Set to true for better naming of trace detail segments in Scala Play applications.

      transaction_tracer:
        stack_based_naming: true
    

Fixes

  • Memory leak when applications using servlets are continuously reloaded inside the JVM.
  • Memory leak with long running transactions performing a high number of external calls.
  • In some cases for JBoss application servers, two JVMs were being displayed in the UI when there was actually only one.
Thursday, November 6, 2014 - 09:25 Download

Fixes

  • Various bug fixes
Tuesday, September 30, 2014 - 17:13 Download

Improvements

  • Spring Web Services
    • The Java Agent now supports Spring Web Services. Transactions are named based on the SOAP method name. The agent also reports the SOAP version, content type, and SOAP Action.
  • Support for Auto-RUM and precompiled JSPs
    • The Java agent now provides auto rum support when precompiling JSPs. To use auto rum when precompiling JSP files, add the agent as a java agent to your pre-compilation process.

Fixes

  • Fix: Under some circumstances the agent would report a LinkageError
  • Fix: Grails 2 transaction names had extra slash
  • Fix for auto-RUM
    • In some cases when a script tag is before a head tag in a JSP file, the auto RUM instrumentation was failing to place the initial New Relic header script in the page.
  • Fix: Reduce overhead of Akka instrumentation when not used in conjunction with Play/Netty
  • Fix: RabbitMQ instrumentation reported unnecessary transactions
    • basicPublish, basicGet, and nextDelivery no longer start short-lived  transactions.
Tuesday, August 26, 2014 - 07:43 Download

Improvements

  • Full support for Java SE 8

    The New Relic Java agent now supports Java SE 8! Applications can now run on a Java 8 JVM, including those compiled to target Java 8 (i.e. -target 1.8). The system property newrelic.enable.java.8 is no longer necessary.

  • @RequestMapping annotation used to name web transactions

    Where available, Spring Web Transactions are now named using the URI path pattern defined in the @RequestMapping annotation. This generally provides even more meaningful transaction names than controller methods. To disable this and revert back to naming using controllers, add this config to your newrelic.yml:

    instrumentation:
        spring_annotations:
           enabled: false
    
  • WebSphere JMX metrics reported when global security is enabled

    Prior to this version, JMX metrics could not be pulled by the agent with WebSphere when global security was enabled. This means custom JMX metrics in a yaml file and default JMX metrics displayed on the JVM Threads and Http Sessions tabs were not reported.

  • Servlet UserPrincipal name can be reported as an attribute

    With this release, you can enable the capturing of the UserPrincipal name so that it is available in New Relic Insights and as a transaction trace attribute. To enable:

    class_transformer:
        com.newrelic.instrumentation.servlet-user:
          enabled: true
    
  • Non-Web Transactions can now be made Key Transactions with a custom apdex T

    This feature will be available in the RPM UI very soon. It requires this or a higher version of the agent.

Fixes

  • Fix: Web transactions not always reported.

    In some unusual cases the Agent stopped reporting web transactions. The agent would log an error that included the phrase "Inconsistent state"

  • Fix: WebSphere 7 reports active thread count on the JVM tab

    The thread pool active count being displayed in the UI was actually the pool size.

  • Fix: Excess error reporting in Play apps

    In Scala/Play apps, the agent was incorrectly logging errors when promises were resolved with a Failure.

  • Fix: Request headers are not read when cross application tracing is disabled

    Disabling cross application tracing using these config settings did not stop the Agent from reading request headers.

    cross_application_tracer:
    enabled: false
    
  • Fix: NewRelic API methods prematurely deprecated

    In 3.9.0, some API calls in com.newrelic.api.agent.NewRelic were prematurely deprecated. We are in the process of providing a more complete API for the New Relic agent. In an upcoming release, these methods may become deprecated, but with a stable and superior API alternative.

Thursday, July 31, 2014 - 19:36 Download

New Features

  • Support for new Cross Application Trace map

    This release enhances cross application tracing with the new trace map visualization of your app's cross application calls. The new visualization helps you spot bottlenecks in external services within transaction traces and gives you an end-to-end understanding of how the transaction trace is used by other applications and services. This leads to faster problem diagnosis and better collaboration across teams. All agents involved in the cross application communication must be upgraded to see the complete graph. You can view cross application traces in the transaction trace drill-down.

  • Support for RabbitMQ

    You can now see messages sent to and received from RabbitMQ 2.7.0 or higher. The time spent processing a dequeued message is shown as a Message transaction.

  • Support for SOAP over CXF

    In this release, we provide automated instrumentation of your SOAP calls when using CXF 2.7.

Improvements

  • Absolute maximum for max_samples_stored lifted

    In previous versions of the agent, max_samples_stored could not be set to more than 10000. This restriction has been lifted, which can help avoid sampling.

Fixes

  • Enable Cross Application Tracing for all valid uses of HttpURLConnection

    Prior to this, certain uses of HttpURLConnection between two New Relic apps would fail to be recognized as Cross Application Traces and instead show up as external calls.

  • Allow customers to set the system property logback.ContextSelector

    Prior to this fix, the agent would throw a ClassNotFoundException when the system property logback.ContextSelector was set.

  • Wrong Application name in App Map when Auto App Naming is enabled

    When the enable_auto_app_naming config setting is set to true, the auto-named apps are incorrectly identified as the default app in the App Map.

Monday, July 28, 2014 - 15:50 Download
  • Fixed: Instrumentation missing including browser monitoring

    There was a bug in the agent that caused several instrumentation modules to not be loaded. This bug occurred when no extensions directory existed or the extensions directory was empty. This fix will allow auto-RUM to report normally. This bug was introduced in 3.8.0.

  • Fix: Missing metrics with Java 2 Security

    When Java 2 Security was enabled, the agent failed to report some metrics. This bug was introduced in 3.8.0.

  • Fix: Agent could stop reporting transactions

    For Jetty applications, the agent could stop reporting transactions if an uncaught exception was thrown. This bug was introduced in 3.6.0.

  • Fix: Agent not reporting external services in Play 2.3

    The Java Agent was not reporting calls to external services.

Thursday, July 10, 2014 - 20:46 Download

Notes

  • Fix: EJB application transaction metrics reporting correctly for WebLogic

    In version 3.8.0 of the agent, EJB application transaction metrics for WebLogic were reporting the data as the average value per a bean instead of the total value per an application. This has been fixed and the data can now be found under the JVM tab.

  • Fix: App Map incomplete

    If a web request made an external call to another app, the app making the web request did not appear in the App Map. Moreover, subsequent external calls to other apps did not appear in the App Map either.

Monday, June 30, 2014 - 14:16 Download

Notes

  • Experimental support for Java SE 8

    This version includes experimental support for Java 8. Code that is known to work with Java SE 8 and compiled for Java 6 or 7 (such as Tomcat 8, Play Framework 2.3, etc) should work fine. We would like your feedback if you run into any trouble running code compiled for Java SE 8.

    Please only try this in non-production environments. We are eager for your feedback as we work to make Java 8 support production-ready. To enable Java SE 8 compatibility, set the following system property on your system:

    -Dnewrelic.enable.java.8

  • Support for Hibernate 4.3

    The Java agent now reports details on calls to Hibernate 4.3 as well as previous versions.

  • Fix: Cross-Application Tracing didn't trace when caller used WLS 11g and SOAP.

    In Oracle WebLogic Server 11g, cross-application tracing (CAT) failed for external calls originating in the default SOAP pipeline, producing an exception in the log. This bug has been fixed.

  • Fix: Old DocumentationBuilderFactory can cause agent to disable itself

    When using a DocumentBuilderFactory implementation compiled with Java 1.4 or below an abstract method error was being thrown, causing the agent to disable itself.

  • Fix: Agent not detecting async servlets in WebSphere 8.x

    The Java Agent was not detecting the call to AsyncContext.complete(), so it was not reporting async servlet calls.

Wednesday, June 11, 2014 - 14:27 Download

Notes

  • Support for Play 2.3

    The Java Agent now provides full support for Play 2.3. In particular, transaction naming is based on the controller action.

Tuesday, June 3, 2014 - 21:06 Download

Notes

  • Fix: NewRelic.setRequestAndResponse API call was not backward-compatible

    Implementation classes of the com.newrelic.api.agent.Request and com.newrelic.api.agent.Response interfaces compiled with a pre-3.5.0 version of newrelic-api.jar threw a java.lang.AbstractMethodError when used with a 3.5.0 or higher version of the Agent.

  • Fix: NewRelic.setRequestAndResponse can cause LinkageError

    For some app servers, calling NewRelic.setRequestAndResponse API caused a java.lang.LinkageError: loader constraint violation

  • Fix: ignoreTransaction attribute ignored

    The ignoreTransaction="true" attribute in custom xml had no effect. The transaction was not ignored even with "true" set.

  • Fix: In rare cases, Auto-RUM failed to add the New Relic header script to JSP pages.

  • Fix: Naming of CGLib classes

    Improved the fix in 3.7.0 for excluding the random part from the name of CGLib generated class.

  • Fix: Agent works properly inside a folder with + in the path

    Improved the fix in 3.7.0 for a directory path with a + character.

Tuesday, May 20, 2014 - 22:09 Download

Notes

  • Flexible capturing of attributes

    The Java agent offers the ability to fine tune the attributes being sent to New Relic. Please see our docs site for more information on configuring attributes: https://docs.newrelic.com/docs/java/java-agent-attributes

  • Agent-Side High Security Configuration

    If your account is set to high security in the New Relic UI, you must add the following to your local newrelic.yml configuration file:

    high_security: true 
    

    Without this property, the agent will stop collecting data when high security is enabled in the New Relic UI. See https://docs.newrelic.com/docs/subscriptions/high-security

  • Discovery of hostname reported to New Relic

    If New Relic reports an IP address for your hostname, you can now control whether the host name is an IP version 4 or 6 address by setting the following property in your newrelic.yml configuration file:

    process_host: 
      ipv_preference: {4 or 6}
    
  • Improved JMX metric naming

    You can now set the metric name when configuring JMX metrics through a custom yaml file using the property "root_metric_name". Note, all of the JMX metrics will still be prefixed with "JMX" and end with the name of the attribute. See https://docs.newrelic.com/docs/java/custom-jmx-yaml-examples

  • Fix: Naming of CGLib classes

    CGLib auto generated classes with Spring resulted in poor metric names. The agent now excludes the random part from the name.

  • Fix: JMS transaction naming

    JMS onMessage instrumentation now uses a lower priority for naming transactions and honors the enable_auto_transaction_naming config.

  • Improved Jetty coverage

    Jetty versions 9.04 through 9.06 were not instrumented. This has been fixed.

  • Fix: Potential memory leak from database calls

    In some cases when database work is performed outside of a New Relic transaction, a memory leak could occur. This bug has been present in the agent since 3.5.0.

  • Fix: VerifyError can occur when using Nevado JMS.

Thursday, April 24, 2014 - 12:45 Download

Notes

  • Enhanced XML for custom instrumentation

    The custom XML xsd has been enhanced to support the instrumentation of interfaces, subclasses, and method annotations. These enhancements give you much more flexibility to identify transactions and add monitoring of components without changes to your source code.

  • Fix: Agent could cause VerifyError

    In specific cases, the agent could cause verification errors.

  • Fix: Embedded Jetty instrumentation

    Starting with the 3.3.1 agent, transactions were not reported for some configurations of embedded Jetty.

  • Fix: Exceptions incorrectly reported

    In some cases exceptions were reported even if configured to be ignored.

  • Fix: Embedded Tomcat not reporting JMX Builtin metrics

    In newer versions of embedded Tomcat the agent wasn't collecting JMX metrics properly.

  • Fix: Apache HttpClient 4.3 not consistently reported

    The Java agent now instruments Apache HttpClient 4.3 calls, including the new call patterns introduced in 4.3.

  • Fix: RESTEasy transactions

    In certain instances, transactions between applications were not getting linked correctly when RESTEasy was used.

  • Fix: JBoss 7 port not reported correctly

    The port was not reported correctly for some JBoss users.

  • Fix: Auto-RUM bug

    Starting in version 3.5.0 of the Java agent, in rare cases Auto-RUM could cause the New Relic footer script to be placed within a script tag.

  • Fix: Errors not reporting with some versions WebSphere 7.0

    In some Fix Packs of WebSphere 7.0, the agent did not report errors properly.

  • Fix: Agent works properly inside a folder with + in the path

    The Java agent did not initialize properly when in a folder with a + character in the pathname.

  • Fix: Agent HttpClient logging

    The Agent's HttpClient was writing to the app server's log when it discovered a log4j appender.

  • Fix: Inconsistent State with Play 1.2.x

    In some cases the agent was logging an "Inconsistent state!" message and not reporting a transaction.

  • Fix: Invalid errors for Stripes

    The Agent was erroneously reporting spurious 404 errors for web apps using Stripes.

  • Fix: Hanging threads in the Agent with SQL Prepared Statements

    Under rare circumstances, threads could hang in the Agent when an application with multiple threads made heavy use of SQL Prepared Statements.

  • Fix: Request queue time was incorrect for some versions of nginx

    Nginx fractional second header values for queue and server start times are now parsed correctly.

  • Fix: XML entity expansion with non-SSL connection to New Relic

    Fixed an XML entity expansion vulnerability that only occurs when the agent is configured with ssl: false; the default is true. The agent already has other protection against unauthorized entity expansion. This fix is an additional layer of protection.

  • Fix: In rare case, agent can cause application thread to hang

    Under rare circumstances, an application thread could hang when an application with multiple threads made heavy use of SQL Prepared Statements.

Thursday, April 24, 2014 - 12:42 Download

Notes

Note: This is a bugfix release for the legacy Java SE5 version of the agent. Unless you are a Java SE5 user, use the latest version of the agent.

The 3.x agent works with Java SE 6 and 7. If you are using Java SE 5, this is the release for you.

  • Fix: XML entity expansion with non-SSL connection to New Relic

    Fixed an XML entity expansion vulnerability that only occurs when the agent is configured with ssl: false; the default is true. The agent already has other protection against unauthorized entity expansion. This fix is an additional layer of protection.

Thursday, March 27, 2014 - 15:06 Download

Notes

  • Fix: Auto-RUM bug

    Starting in version 3.5.0 of the Java agent, in rare cases Auto-RUM could cause the New Relic header to be placed within a script tag. This bug has been fixed.

  • Fix: In rare cases, agent stops reporting

    In rare cases, the Java Agent hung on socketRead while performing an SSL handshake and would not report data until JVM restart. This bug has been fixed.

  • Fix: Occasionally missed web transaction when using ResultSet

    In version 3.5.0 of the agent some transactions that use a JDBC ResultSet were missing in the UI. The agent log would show an "Inconsistent State" error. This bug has been fixed.

  • Fix: X-Ray Sessions bugs.

    X-Ray Sessions sometimes returned no transaction traces. A memory leak with X-Ray Sessions when many sessions were run was also fixed.

Wednesday, March 5, 2014 - 17:49 Download

Notes

  • New Relic supports WildFly 8.0

    The Java Agent now provides instrumentation for WildFly 8.0. You will see the same great visibility into your web transactions, app server stats, and frameworks that you have with previous versions of JBoss.

  • Fix: PostgreSQL explain plan bug

    Fixes PostgreSQL bug that allowed parameters to be sent in explain plans under some circumstances. Parameters are now masked prior to sending when explain plans are enabled (explain_enabled: true) and record_sql is set to 'obfuscated'.

  • Fix: SQL parameter obfuscation didn't work if the parameter value contained a newline

    The record_sql: obfuscated config setting did not properly mask parameters when it included a newline character. This bug has been fixed.

  • Agent no longer supports obfuscation of individual fields

    Previous versions of the agent allowed an obfuscated_sql_fields option to select specific field names to obfuscate when record_sql: raw. We have discovered rare cases in which this feature would not mask SQL parameters correctly, so we have removed the configuration option. Now, if obfuscated_sql_fields is set, the setting of record_sql: raw is ignored and all fields are masked.

  • Fix: In some cases, an agent could fail to reconnect to New Relic

    Fixed several issues that in rare cases could cause the agent to cease reporting data until JVM restart.

  • Fix: Transaction name specified in XML configuration was being ignored

    In some cases transaction names set in XML files in the extensions folder were being ignored. This bug has been fixed in this release.

  • Fix: Jetty 9.1 transactions were not showing up in 3.3.x or higher agents

    Starting with the 3.3.1 agent, customers were not seeing transactions from Jetty 9.1. This bug has been fixed.

  • Fix: Websphere 7.0 was not being instrumented

    Starting in agent version 3.3.0, WebSphere 7.0 was not being instrumented. This bug has been fixed.

  • Fix: Solr tabs in UI not always appearing

    If you are running a Solr application and not seeing any tabs, please update to this version.

Pages