Java agent 4.11.0 [Established Release]

Released on: 
Tuesday, February 12, 2019 - 10:29

Improvements:

  • Vert.x 3.6

    The Java agent now provides visibility into your applications built using the Vert.x 3.6. 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.

  • Wildfly 12-15

    The agent now supports Wildfly versions 12 through 15.

Fixes:

  • Fixed an issue where applications using neo4j bolt JDBC driver could fail to start.
  • The log_daily configuration did not respect documented precedence.
  • Fixed a bug that caused the Spring Webflux instrumentation to fail to apply for spring-webflux versions greater than 5.0.*.
  • Fixed an issue where transactions would not be fully reported if distributed_tracing.enabled = true and cross_application_tracer.enabled = false.
  • Fixed an issue where Akka Http application would not start with the agent attached when using sbt.
  • Fixed an issue where the agent could fail to determine the hostname .

Known Issues

Fixes in 4.12.0

  • Fixed an issue with Jax-RS subresource transaction naming where the root path is duplicated when a nested resource structure is used. This could lead to transactions being named incorrectly for incoming requests to a Jax-RS framework.
  • Fixed a bug in the agent's Jetty metric sampling that could prevent Jetty specific metrics from being reported when the number of threads returned by JMX is zero.
  • Fixed a NullPointerException that can occur when cross application tracing configuration is explicitly disabled.
  • Fixed an issue where transactions would be named incorrectly when using custom Akka Http stream directives or a pathEnd directive followed by a Segment directive.
  • Fixed an issue where certain usages of Akka and Scala would prevent transactions from being reported to New Relic. This would also manifest as a NullPointerException in the agent log at finest level.
  • The Java agent no longer includes Jaxb or Logback dependencies. A new dependency on Log4j2 has been added.

Fixes in 4.12.1

  • Fixed an issue where an exception would be thrown during agent initialization which caused the application to shut down when the log file is not writable. In previous agent versions there was an undocumented behavior where the agent would log to STDOUT instead.
  • Fixed a regression where a NullPointerException would be logged and instrumentation would not be applied when using an XML extension with comments preceding the instrumentation section.
  • Fixed issue where setting the log_limit_in_kbytes greater than 0 and log_file_count equal to 1 would result in the agent not logging to the agent log file.

Fixes in 5.0.0

  • 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 details, see [Java agent configuration(]https://docs.newrelic.com/docs/agents/java-agent/configuration/java-agen...).
  • 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.

Fixes in 5.1.0

  • Fixed an issue in the Scala instrumentation that would cause an Java.lang.IllegalArgumentException: to be thrown when the Lightbend Cinnamon agent is in use.
  • Fixed issue where cross application tracing headers were incorrectly parsed when distributed tracing is enabled. Applications that use both distributed tracing and cross application tracing will no longer report external transaction breakdown metrics.
  • Fixed an issue where the agent’s Kafka instrumentation would report WakeupExceptions as errors in New Relic. These exceptions will no longer be reported.
  • Fixed a Log4J ClassCastException for applications running on the IBM J9 JVM that set a custom logging manager via the -Djava.util.logging.manager system parameter.
  • The agent now supports using the thread profiler when the send_environment_info configuration is disabled.

Fixes in 5.2.0

  • Fixed an issue where very long-running transactions with a large number of segments would cause an excessive amount of memory usage. The agent will no longer trace segments once the segment_limit has been reached.

Fixes in 5.3.0

  • Akka-http instrumentation would name transactions incorrectly when using an asynchronous onComplete callback to match routes.
  • The agent’s JaxRS instrumentation did not apply to cases where a concrete class implements the same method from two different interfaces.
  • The agent would not report JMX metrics when one or more composite attributes were null.
  • Akka-http path matching instrumentation could produce NullPointerExceptions when using a "repeat" path segment with no values. Transactions that pass some values will report as-is, but transactions that pass no values will be reported with a different segment in the metric name: "().repeat()".
  • The ignore_status_codes system property was not getting applied correctly.

Fixes in 5.4.0

  • Transaction traces would occasionally miss segments when using the spring @Async annotation with servlets.
  • Jax-RS instrumentation was not starting transactions.
  • A potential race condition during agent startup that would manifest as a NoClassDefFoundError for internal New Relic classes.
  • Akka-http instrumentation would attempt multiple retransforms of the same class.
  • The noticeError API would drop custom attributes that weren't of type String, Number, or Boolean, such as Enums or other custom types.

Fixes in 5.6.0

  • Spring Webflux WebClient would not track external calls when constructed with baseUrl(String baseUrl).
  • The NewRelic.getAgent().getConfig().getValue() api would not check configuration values set via environment variables.
  • The agent’s completable-future instrumentation could hold a reference to Tokens after they were expired, which could cause excessive memory usage.
  • Error traces could report to the wrong application when auto_app_naming is enabled and there were errors from two different application names getting reported during the same harvest.
  • The agent’s MongoDB instrumentation would instrument the same builder used by the async and reactive-streams drivers, resulting in excessive memory usage and incorrect transaction times. Note: The agent will no longer instrument the sync MongoDB driver if the async and/or reactive-streams drivers are on the application’s classpath.