Java Agent 5.0.0

Released on: 
Wednesday, April 24, 2019 - 10:17

Improvements

gRPC

The Java agent now supports gRPC. You will now see transactions, errors, external calls, and distributed traces for all of your gRPC-based clients and services.

Vert.x-3.7

The Java agent now supports Vert.x 3.7. The agent instruments Vert.x Web, Vert.x Core, and Vert.x HTTP client. With this instrumentation, the agent will identify and name your transactions based on Vert.x web routing paths. The agent will also time web handlers, track async handlers, and external calls made with Vert.x HTTP client.

OkHttp 3.14.0

This release adds support for OkHttp 3.14.x. You will now see OkHttp 3.14 calls as external calls in New Relic.

spray-can

The Java agent now supports the spray-can client. The agent will now capture outbound http calls made with the spray-can client and report them as external calls and/or distributed traces.

Embedded Derby 10.15.1.3

The Java agent has expanded support for Derby JDBC up to and including version 10.15.1.3.

JVM monitoring

The Java agent now reports JMX stats for off-heap direct byte buffers. These metrics are available via the JVM page

recordCustomEvent API

The recordCustomEvent API has been updated to accept Map<String,?> as a second parameter instead of Map<String,Object>, allowing maps such as Map<String,String> to be passed without having to cast the type of the map's value.

Fixes

  • The agent no longer requires a newrelic.yml even when the app_name and license_key configuration options are set via environment variables and/or system properties. For more information, see the Java environment variables documentation.
  • HttpSessions JMX metrics were not reporting for Websphere Liberty Profile applications.
  • The transaction_events.max_samples_stored configuration value in the newrelic.yml would incorrectly override the system properties or environment variable values.
  • Applications running on WildFly 12 - 15 would fail start with NoClassDefFound errors for Java agent classes.
  • Play applications where external calls inside of future callbacks using async-http-client would not be recorded.
  • Setting log_limit_in_kbytes would result in the agent not logging to the agent log file if log_file_count was also set to less than 2.
  • Webflux status codes which were not recognized by Spring Webflux caused a 500 status code to be returned and an exception in application logs.

Known Issues

gRPC: Fixed in 5.1.1

This release contains two bugs in the Java agent's gRPC instrumentation. We highly recommend customers using gRPC instrumentation to upgrade to this and/or later agent versions.

  • References to transaction segments were not being removed correctly, which can cause a memory leak.
  • The agent could cause the gRPC server listeners to fail to execute its completed and/or cancelled methods, which can cause unexpected behavior.

Deprecation Notes

Self installer

The New Relic Java agent's self-installer has been removed in order to provide a more consistent user experience. To install the Java agent, add the full path to the newrelic.jar to the -javaagent flag in your JVM options. For more information on installing the agent on specific application servers, Docker, Maven, or Gradle, see the JVM argument documentation.

Deprecated instrumentation

The following instrumentation modules have been moved out of the default Java agent, and are now provided as a separate download. To continue using these modules, just add them to the agent's extensions directory in your newrelic folder or wherever your extensions directory is configured.