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.
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.
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.
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.
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: trueWithout 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.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End of life policy.
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.
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.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End of life policy.
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.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Notes
The 3.x agent works with Java SE 6 and 7. If you are using Java SE 5, this is the release for you.
PostgreSQL explain plan bug
There was a PostgreSQL bug that allowed parameters to be sent in explain plans under some circumstances. To avoid this issue, the New Relic agent now does not report explain plans for PostgreSQL.
Agent no longer supports obfuscation of individual fields
Previous versions of the agent allowed an obfuscatedsql_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: 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.
Fix: Private trust store location for use_private_ssl flag
The 2.21.4 agent did not properly load a private trust store used with the use_private_ssl flag. This bug has been fixed.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
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 obfuscatedsql_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.