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.
Improvements:
Synthetic transaction tracing
Synthetic monitors lets you monitor your site from around the world. When you use synthetic monitoring 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.
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.
Fixes
Importante
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 ofnewrelic.yml: sync_startup: true
.
Workaround
If you require a workaround for one of these issues, please open a ticket at support.newrelic.com.
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 section 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.
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.
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 transactionsWhere 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: falseWebSphere 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: trueNon-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: falseFix: 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.
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
liftedIn 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 propertylogback.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.
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.