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.
- 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.
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.
X-ray sessions sometimes return no transaction traces. Many x-ray session runs can cause a memory leak.
- Higher overhead with Play 2 than later releases.
- Does not work properly with Play 2.2
akka.actor.ActorKilledExceptionas an error.
- Play transaction does not complete until timeout expires
- When using Play,
ignoreTransactioncall 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_startupflag set to true in the common section of
newrelic.yml: sync_startup: true.
If you require a workaround for one of these issues, please open a ticket at support.newrelic.com.
- 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.
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
- 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.
- 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.
- 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.
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.
@RequestMappingannotation used to name web transactions
Where available, Spring Web Transactions are now named using the URI path pattern defined in the
@RequestMappingannotation. 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 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.
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.
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.
Absolute maximum for
In previous versions of the agent,
max_samples_storedcould not be set to more than 10000. This restriction has been lifted, which can help avoid sampling.
Enable Cross Application Tracing for all valid uses of
Prior to this, certain uses of
HttpURLConnectionbetween 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
Prior to this fix, the agent would throw a
ClassNotFoundExceptionwhen the system property
Wrong Application name in App Map when Auto App Naming is enabled
enable_auto_app_namingconfig setting is set to true, the auto-named apps are incorrectly identified as the default app in the App Map.
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.
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.
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:
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.