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 ajava.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
orX-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.
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.
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.
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
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
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.
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.
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.
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.
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:
- Use Java agent 3.6.0 or higher*
- Use Apache HttpClient 4.0 or higher
- Haven’t disabled transaction_traces
*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:
- Disable transaction traces
- Disable only cross-application tracing. This resolves the issue with Java agents prior to 3.26.0.
You can also delete existing transaction traces.