Java release notes

Tuesday, June 16, 2020 - 15:05 Download

Improvements

  • Distributed tracing: With distributed tracing spans and/or Infinite Tracing, the Java agent will now incorporate additional information from the transaction event on to the root span event of the transaction.

  • New TracedMethod.addCustomAttribute(...) APIs have been added for adding attributes directly to spans.

    Note: Any attribute include or exclude settings specific to transaction events should be applied to your span attributes configuration or your global attributes configuration.

  • The Java agent now uses AWS's IMDS v2 to gather instance information.

Fixes

  • Jetty JMX metrics would not report when running embedded in Spring Boot.
  • Local configuration settings could revert to the default following an agent reconnect.
Friday, May 15, 2020 - 16:42 Download

Notes

Bug fixes

This is a patch release that resolves an issue in 5.12.0. With distributed tracing enabled and Infinite Tracing disabled, a defect in version 5.12.0 causes spans to be omitted from distributed traces.

Any customers currently on 5.12.0 are strongly encouraged to upgrade to this 5.12.1 patch release.

Tuesday, May 5, 2020 - 14:26

New Features

Added support for Infinite Tracing on New Relic Edge.

Infinite Tracing observes 100% of your distributed traces and provides visualizations for the most actionable data so you have the examples of errors and long-running traces so you can better diagnose and troubleshoot your systems.

You configure your agent to send traces to a trace observer in New Relic Edge. You view your distributed traces through the New Relic’s UI. There is no need to install a collector on your network.

Infinite Tracing is currently available on a sign-up basis. If you would like to participate, please contact your sales representative.

Known Issue

In-process spans from Java services will not appear in distributed traces. All users should upgrade to 5.12.1.

Improvements

  • Spring

    Spring PatchMapping annotation will now be used to start and name transactions.

  • SQL

    Common Table Expressions in SQL Server, Postgres, and MySQL will report Datastore Metrics Datastore/<vendor>/statement/<first cte name>/with and Datastore/<vendor>/operation/with

  • Distributed Tracing

    Span events now report error attributes if an error occurs: TransactionError events will also contain a corresponding spanId attribute indicating where the error occurred.

Fixes

  • Solr Instrumentation could cause a NullPointerException in the agent logs for queries containing null parameters

  • The JAVA_ENV environment variable configuration has been deprecated. Use NEW_RELIC_ENVIRONMENT to set the environment configuration for the agent to use

  • The JDBC ResultSet instrumentation is now disabled by default internally. Applications configured solely via system properties and/or environment variables can enable with: -Dnewrelic.config.class_transformer.com.newrelic.instrumentation.jdbc-resultset.enabled=true or NEW_RELIC_CLASS_TRANSFORMER_COM_NEWRELIC_INSTRUMENTATION_JDBC-RESULTSET_ENABLED=TRUE

  • The quartz_job configuration did not affect applications using Quartz-2.0 and higher

Wednesday, March 18, 2020 - 10:57 Download

Improvements

  • Java 14

    The New Relic Java agent is now fully compatible with version 14 of the OpenJDK and Hotspot JDKs.

  • Java Flight Recorder

    A new Java Flight Recorder agent extension is now available to report real-time Java profiling metrics for application running on Java 14, including thread allocation, garbage collection and heap memory

Fixes

  • The agent would log a NullPointerException when trying to accept distributed trace payloads before it had connected to rpm.newrelic.com
  • Fixes an issue where W3C headers from New Relic’s .NET agent could produce malformed W3C traceparent headers
  • The agent now logs ForceRestartExceptions at warning level rather than severe
  • The noticeError API now supports reporting attributes of boolean and number types rather than their string representations
Wednesday, January 29, 2020 - 15:34 Download

Improvements

  • Support for W3C Trace Context, with easy upgrade from New Relic trace context

    Distributed tracing now supports W3C Trace Context headers for HTTP and gRPC protocols when distributed tracing is enabled. Our implementation can accept and emit both W3C trace header format and New Relic trace header format. This simplifies agent upgrades, allowing trace context to be propagated between services with older and current releases of New Relic agents. With this release, W3C trace header format will always be accepted and emitted. New Relic trace header format will be accepted, and you can optionally disable emission of the New Relic trace header format.

    The New Relic trace header format can disabled using this config or as documented here: newrelic.config.distributed_tracing.exclude_newrelic_header = true

    Also, see Known issues and workarounds.

  • Cassandra

    • This release adds instrumentation for queries in versions 3.8+ of the Datastax Cassandra driver, including slow query support. You’ll see relevant breakdowns in the overview chart, entries on the Databases page, and segments in transaction traces.
  • AWS Async SDK

    • AWS S3 - The Java agent now reports calls to Amazon S3 using the S3AsyncClient as external metrics
    • AWS SQS - The Java agent now reports calls to SqsAsyncClient as message queue metrics
    • AWS SNS - The Java agent now reports calls to Amazon SQS using SNSAsyncClient as message queue metrics

Fixes

  • In an effort to modernize our language and improve clarity, we have renamed several config values. The old names will still work for now, but they will all be removed in the next major version.

    transaction_tracer.slow_query_whitelist is now transaction_tracer.collect_slow_queries_from

    strip_exception_messages.whitelist is now strip_exception_messages.allowed_classes

    command_parser.blacklist is now command_parser.disallow

  • The strip_exception_messages config now excludes nested exception messages

  • The agent will now use a lightweight tracer for SQL tracers beyond the segment_limit, improving performance in cases with a high number of segments.
  • The agent would fail to report the Docker containerId for some combinations of systemd and Kubernetes
  • The agent logger would fail to log with: “ERROR RollingFileAppender 'File': No TriggeringPolicy provided” when newrelic.config.log_file_count>1 and newrelic.config.isDaily=false and newrelic.config.log_limit_bytes=0

Known issues and workarounds

If a .NET agent is initiating distributed traces as the root service, you must update that .NET agent to version 8.24 or later before upgrading your downstream Java New Relic agents to this agent release.

Tuesday, December 10, 2019 - 11:17 Download

Improvements

  • AWS SDK

    • AWS S3 - The Java agent now reports calls to Amazon S3 using AmazonS3 and S3Client as external metrics

    • AWS SQS - The Java agent now reports calls to Amazon SQS using AmazonSQS, AmazonSQSAsync, SqsClient as message queue metrics

    • AWS SNS - The Java agent now reports calls to Amazon SQS using AmazonSNS, AmazonSNSAsync, SnsClient as message queue metrics

  • Distributed Tracing - The agent now supports distributed traces originating from the New Relic Browser agent

Fixes

  • The ca_bundle_path configuration setting would fail to correctly import certificates when running on IBM J9
  • Clarified the startup log message about the state of browser monitoring for the current application.
  • The agent logger would sometimes throw a NullPointerException
  • The agent would stop reporting Kafka metrics when one or more clients where closed
  • HttpURLConnection instrumentation could cause a NullPointerException in the agent logs and fail to report External metrics

Deprecated

  • Jar Collector system properties prefixed with newrelic.config.module and environment variables prefixed with NEW_RELIC_MODULE are deprecated and will be removed in a future agent release. Instead use the newrelic.config.jar_collector and NEW_RELIC_JAR_COLLECTOR prefixes.

Removed dependency

  • The agent no longer has a dependency on ANTLR.
Tuesday, October 29, 2019 - 12:00 Download

New features

  • gRPC
    • gRPC error reporting is now configurable
    • Response codes, component type, and method type are now recorded as attributes.
    • The agent now reports the gRPC status code rather than "translating" to HTTP status codes.
  • Vert.x
    • The Java agent now provides visibility into your applications built using the Vert.x 3.8. 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.
  • XML custom instrumentation
    • The custom XML instrumentation XSD has been enhanced to support now include support for specifying leaf tracers.
  • Class Histogram
  • Jedis
    • Added support for Jedis 3.0.0 and higher. You can now see your Jedis calls in breakdowns in the overview chart, entries in the Databases tab, and segments in transaction traces.
  • Lettuce

New OSS SDK

We now have an open source Telemetry SDK for Java for sending telemetry data to New Relic. The current SDK supports sending dimensional metrics to the Metric API and spans to the Trace API.

Fixes

  • The Solr 7 instrumentation would not report Update JMX metrics.
  • HttpURLConnection instrumentation produced External metrics only when network methods (getInputStream, getResponseCode) are called.
  • MongoDB instrumentation would report duplicate metrics when applications invoked MongoClientOptions.build() more than once.
Wednesday, September 25, 2019 - 09:44 Download

Improvements

  • Java 13

    The New Relic Java agent is now fully compatible with version 13 of the OpenJDK and Hotspot JDKs.

Bug fixes

  • Calls to NewRelic.getAgent().getTracedMethod().addOutboundRequestHeaders() will no longer throw an exception if a traced method has started but a transaction has not. This could happen by calling this in a method annotated with @Trace(async=true) before a token is linked.

  • Updates Guava to the newest release.

  • NoClassDefFoundError would occur in agent logs when a spring controller is used without a root level RequestMapping annotation.

  • The gc_time metric, which was enabled by default in version 5.2.0, has now been disabled by default since its results are often misleading.

Tuesday, September 17, 2019 - 10:51 Download

New APIs

  • Added getTraceMetadata(). This provides information about the currently executing trace, including the trace and span ids as well as it’s sampled state

  • getTraceId(), which provides the currently executing trace’s identifier from the TraceMetadata.

  • getSpanId(), which provides the span identifier associated with the currently executing span from the TraceMetadata.

  • isSampled(), returns whether or not the current transaction is part of a sampled distributed trace from the TraceMetadata.

  • Added getLinkingMetadata(), which provides an opaque map of key/value pairs that can be used to correlate this application in the New Relic backend.

Fixes

  • 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.

Wednesday, September 4, 2019 - 14:33 Download

New features

  • Support for Real Time Streaming

    • Event data is now sent to New Relic every five seconds, instead of every minute. As a result, transaction, error, and custom events will now be available in New Relic One and Insights dashboards in near real time. For more information on how to view your events with a five-second refresh, see the real time streaming documentation.

    • Note that the overall limits on how many events can be sent per minute have not changed. Also, span events, metrics, and trace data is unaffected, and will still be sent every minute.

Improvements

  • The Java agent now uses persistent connections when connecting to New Relic, reducing overhead.
Tuesday, August 27, 2019 - 13:07 Download

Notes

  • x-ray and any x-ray related attributes and identifiers will no longer be available in this version of the java agent. The New Relic x-ray feature reached end-of-life on April 17, 2019

Improvements

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

  • Agent configuration settings set via environment variables will be available on the Environment page.

  • Improves performance of the Java agent.

Fixes

  • 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 an Enum or other custom types.

Wednesday, July 24, 2019 - 09:26 Download

Improvements

  • gRPC

    The Java agent now has support for gRPC version 1.22

  • Dragonwell JDK

    The Java agent now fully supports Alibaba's Dragonwell JDK

  • Azul Zing

    The Java agent now supports Azul's Zing JVM

  • Enables ability to migrate to Configurable Security Policies (CSP) on a per agent basis for accounts already using High Security Mode (HSM.

    When both HSM and CSP are enabled for an account, an agent (this version or later) can successfully connect with either high_security: true or the appropriate security_policies_token configured.

Fixes

  • LinkageError for applications using both OpenJ9 and Log4J log manager

  • ClassNotFoundException for applications that specify a Log4j ContextSelector via the -DLog4jContextSelector system property

  • 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

  • Race condition that could throw a NullPointerException in the agent log during class transformation

  • 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()"

  • ignore_status_codes system property was not getting applied correctly

Wednesday, June 26, 2019 - 08:15 Download

Improvements

  • MongoDB

    This release adds instrumentation for mongo-java-driver clients created using the MongoClients class Previous versions of the agent only supported the MongoClient() constructor Note: The MongoDB Asynchronous Java Drivers are not yet supported.

  • Custom request header attributes

    The Java agent now provides a new configuration option to report HTTP request header(s) as transaction attributes. See the documentation for more details.

  • Distributed tracing

    Datastore span events now include a db.collection attribute. This field represents the collection or primary table name for the associated query. It is accessible in Insights, Distributed Tracing, and anywhere you get your favorite spans.

  • GC Time

    The Java agent now records time spent waiting for garbage collection during the duration of a transaction and includes the GC time on the corresponding transaction trace as well as the transactions time chart.

    This setting is configurable as follows in the newrelic.yml:

  transaction_tracer:
    gc_time_enabled: true 

Fixes

  • Fixes 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.

Notes

Thursday, June 13, 2019 - 17:15 Download

Fixes

  • gRPC

This release fixes 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
Wednesday, May 29, 2019 - 09:44 Download

Improvements

  • JAX-RS

    This release adds support for @PATCH JAX-RS annotation. The agent will create and name transactions based @PATCH annotations.

Fixes

  • Fixes an issue in the Scala instrumentation that would cause an Java.lang.IllegalArgumentException: to be thrown when the Lightbend Cinnamon agent is in use.

  • Fixes an 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.

  • Fixes an issue where the agent’s Kafka instrumentation would report WakeupExceptions as errors in New Relic. These exceptions will no longer be reported.

  • Fixes 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.

Notes

  • The agent now sends data to New Relic using gzip compression by default. To use the previous compression set the compressed_content_encoding configuration value to deflate

  • The jdbc-resultset instrumentation is now disabled by default in the newrelic.yml and will be disabled by default in all future releases.

Known Issues

Fixed in 5.1.1

  • gRPC

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
Wednesday, April 24, 2019 - 10:17 Download

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.

Wednesday, March 27, 2019 - 07:47 Download

Fixes

  • 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.

Wednesday, March 20, 2019 - 07:33 Download

Improvements

  • Kafka-clients

    The Java agent now supports the kafka-clients library. The agent will automatically report up Kafka metrics to New Relic.

    Optional support is provided for reporting Kafka metrics as Insights events and for enabling distributed tracing. More information can be found in the New Relic documentation.

  • Java 12, Coretto and Zulu

    The New Relic Java agent is now fully compatible with Java 12. This release also adds support for the Amazon Coretto and Azul Zulu JDKs.

New APIs

  • Added ignoreErrors() to the Transaction API, allowing all errors reported within a specific transaction to be ignored.

  • Added addCustomParameters(Map<String, Object>) API, allowing multiple custom parameters to be added to a transaction at once.

  • Updated the noticeError() API documentation to clarify that when the api is invoked multiple times while in a transaction, only the first error will be reported.

Deprecated APIs

  • The custom transport channel API is now deprecated in favor of the Distributed Tracing API.

  • The skipTransactionTrace attribute on the @Trace annotation is now deprecated. The excludeFromTransactionTrace attribute should be used in its place.

Deprecated Instrumentation

  • JetS3t

    Removed built-in instrumentation for JetS3t. The agent will continue to report external calls made with the JetS3t client.

Fixes

  • 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

Tuesday, February 12, 2019 - 10:29 Download

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.

Fixes in 5.7.0

  • Calls to NewRelic.getAgent().getTracedMethod().addOutboundRequestHeaders() will no longer throw an exception if a traced method has started but a transaction has not. This could happen by calling this in a method annotated with @Trace(async=true) before a token is linked.
  • Updates Guava to the newest release.
  • NoClassDefFoundError would occur in agent logs when a spring controller is used without a root level RequestMapping annotation.
  • The gc_time metric, which was enabled by default in version 5.2.0, has now been disabled by default since its results are often misleading.

Fixes in 5.8.0

  • The Solr 7 instrumentation would not report Update JMX metrics.
  • HttpURLConnection instrumentation produced External metrics only when network methods (getInputStream, getResponseCode) are called.
  • MongoDB instrumentation would report duplicate metrics when applications invoked MongoClientOptions.build() more than once.

Fixes in 5.9.0

  • The ca_bundle_path configuration setting would fail to correctly import certificates when running on IBM J9
  • Clarified the startup log message about the state of browser monitoring for the current application.
  • The agent logger would sometimes throw a NullPointerException
  • The agent would stop reporting Kafka metrics when one or more clients where closed
  • HttpURLConnection instrumentation could cause a NullPointerException in the agent logs and fail to report External metrics

Fixes in 5.10.0

  • In an effort to modernize our language and improve clarity, we have renamed several configuration values. The old names will still work for now, but they will all be removed in the next major version.

    transaction_tracer.slow_query_whitelist is now transaction_tracer.collect_slow_queries_from

    strip_exception_messages.whitelist is now strip_exception_messages.allowed_classes

    command_parser.blacklist is now command_parser.disallow

  • The strip_exception_messages config now excludes nested exception messages

  • The agent will now use a lightweight tracer for SQL tracers beyond the segment_limit, improving performance in cases with a high number of segments.
  • The agent would fail to report the Docker containerId for some combinations of systemd and Kubernetes
  • The agent logger would fail to log with: “ERROR RollingFileAppender 'File': No TriggeringPolicy provided” when newrelic.config.log_file_count>1 and newrelic.config.isDaily=false and newrelic.config.log_limit_bytes=0
Wednesday, January 23, 2019 - 10:00 Download

Improvements

  • This release adds Transaction event attributes that provide context between your Kubernetes cluster and services. For details on the benefits (public beta coming soon) see this blog post.
  • The Java agent now supports setting all configuration options via Environment variables. Environment variables will take precedence over newrelic.yml but cannot be updated dynamically since they are read statically on application startup.
  • Adds instrumentation for the Akka HTTP client, versions 10.0 to 10.1.x. This client is used via the Http().singleRequest() method and the agent will now automatically capture these requests as External metrics.
  • Support for MySQL connector 8.0.x
  • Adds official support for Akka Http 10.1.6
  • Span event attributes can now be filtered using include / exclude rules.
  span_events:
    enabled: true
    attributes:
      include:
      exclude:
  • Rename transaction trace segment parameter key from uri to http.url and rename trace key from database_name to db.instance.

Fixes

  • Fixes an issue where Akka HTTP instrumentation can cause higher than normal memory usage when an async Directive is used in the route for an Akka HTTP based app. This can also result in mis-named transactions for any paths underneath the custom Directive.

Pages