Improvements
- Distributed tracing
Distributed tracing lets you see the path that a request takes as it travels through your distributed system. By showing the distributed activity through a unified view, you can troubleshoot and understand a complex system better than ever before.
Distributed tracing is available with an APM Pro or equivalent subscription. To see a complete distributed trace, you need to enable the feature on a set of neighboring services. Enabling distributed tracing changes the behavior of some New Relic features, so carefully consult the transition guide before you enable this feature.
To enable distributed tracing, set enabled to true in the distributed_tracing
section in the newrelic.yml config file.
distributed_tracing: enabled: true
- Added configuration option
proxy_scheme
to allow the agent to connect via https only proxies.
Fixes
- Fixed an issue where transaction throughput counts could be artificially inflated when using async servlets in Jersey.
- Fixed an issue where JBoss and Wildfly datasources could cause a
LinkageError
.
Bug fixes
- Fixed a bug where transactions were being kept alive for too long when application is under heavy GC, causing inaccurate throughput to be reported.
- Fixed a bug in which Akka routing instrumentation could cause extra memory usage. When this is the case, the transaction throughput will look significantly lower than anticipated.
- Fixed a rare bug in Play WS instrumentation where exceptions thrown by instrumentation were propagated out to the application code, potentially causing the request to error.
- Fixed a bug where Jersey Client and HttpUrlConnection could be double instrumented, resulting in inflated external call count.
- Fixed a bug where the total time and response time for a long running task could be misreported.
Improvements
- Configuration for
custom_insights_events.max_samples_stored
format in YAML has been changed. For agents 4.1.0 and above, the old .yml config setting will be ignored, which will result in the agent defaulting to max samples stored of 10,000 custom events. When you update your agent, please migrate to the new format:
custom_insights_events: enabled: true max_samples_stored: 5000
- The agent will log a warning message when it detects that the
java.endorsed.dirs
property is used. Classes in these directories cannot be instrumented by the agent because they are loaded by the bootstrap classloader.
Fixes
- Ensure that custom events added during a transaction do not get discarded if the transaction is ignored via a call to
NewRelic.ignoreTransaction()
. - A security update that corrects an issue affecting PostgreSQL that could occur if High-security mode was enabled (or
record_sql
was set to off) and a query ran slow enough to trigger an explain plan. If the above conditions were met the agent may not have properly stripped out all information from the query. For information on this fix, see the security bulletin. - Addresses cases where the agent could not parse database statements that included the
IGNORE
andINTO
keywords.
Fixes
- Fixes an issue Introduced in 3.48.0 with event sampling. The agent would only report the first max_samples_stored events in a given minute reporting period and disregard the remainder for that minute. With the fix, the agent randomly samples those events across the reporting period.
Improvements
- Removed the SSL configuration option: SSL is now always used in communication with New Relic servers. The
newrelic.yml
ssl configuration and-Dnewrelic.config.ssl
system property are no longer used. Setting either value to anything other than true will result in logging a warning. - Minimum version required for use in EU data center.
Fixes
- Fixes an issue where the thread profiler could fail to report. In this case, the agent logged a
java.lang.StackOverflowError
.
Improvements
- Customers using Tomcat, WebSphere Liberty, or Resin now have data source information available. Data source information includes the number of active and idle connections, as well as the maximum possible connections. This information can be seen under the Data Source tab on the JVMs page
- CompletableFuture instrumentation is more efficient
- Disabling SSL connections to New Relic has been deprecated. SSL connections are enabled by default. In a future release, the option to disable SSL will be removed.
Bug fixes
- Fixed an issue that in rare cases prevented Play async transaction tracking
- Fixed a memory leak that could occur in Spymemcached instrumentation
- Fix to disable
attributes.include
lists when High-security mode is enabled - Fixed an issue where errors outside of a transaction did not contain custom attributes on the event
- Fixed an issue that caused the UI to not display errors that had error messages over 255 bytes
Bug fixes
- A security update corrects an issue where the agent may report DB query results to New Relic or re-issue an SQL statement. For information on the bug fix, see the security bulletin.
Known Issues
Fixes in 3.48.0
- Fixes an issue that in rare cases prevented Play async transaction tracking
- Fixes a memory leak that could occur in Spymemcached instrumentation
- Fix to disable attributes.include lists when High-security mode is enabled
- Fixes an issue where errors outside of a transaction did not contain custom attributes on the event
- Fixes an issue that caused the UI to not display errors that had error messages over 255 bytes
Fixes in 4.0.0
- Fixes an issue where the Thread Profiler could fail to report. In this case, the agent logged a java.lang.StackOverflowError
Fixes in 4.1.0
- Ensure that custom events added during a transaction do not get discarded if the transaction is ignored via a call to NewRelic.ignoreTransaction().
- A security update that corrects an issue affecting PostgreSQL that could occur if High-security mode was enabled (or record_sql was set to off) and a query ran slow enough to trigger an explain plan. If the above conditions were met the agent may not have properly stripped out all information from the query. For information on this fix, see the security bulletin.
- Fixes an issue where the agent could not parse database statements that included the IGNORE and INTO keywords.
Fixes in 4.2.0
- Fixes a bug where transactions were being kept alive for too long when application is under heavy GC, causing inaccurate throughput to be reported.
- Fixes a bug in which Akka routing instrumentation could cause extra memory usage. When this is the case, the transaction throughput will look significantly lower than anticipated.
- Fixes a rare bug in Play WS instrumentation where exceptions thrown by instrumentation were propagated out to the application code, potentially causing the request to error.
- Fixes a bug where Jersey Client and HttpUrlConnection could be double instrumented, resulting in inflated external call count.
- Fixes a bug where the total time and response time for a long running task could be misreported.
Fixes in 4.3.0
- Fixes an issue where transaction throughput counts could be artificially inflated when using async servlets in Jersey.
- Fixes an issue where JBoss and Wildfly datasources could cause a LinkageError.
Fixes in 4.4.0
- Fixes an issue where the Java agent 4.3.0 would not report data depending on the locale setting of the JVM. Java Agent 4.3.0 failed to send event data if the JVM locale is set to use a comma as the decimal. You would see NumberFormatException in the agent log.
- Fixes a rare issue where the agent will incorrectly attempt to continually retransform classes when an extension with a modification date in the future is used, causing a significant increase in CPU load.
- Fixes a ConcurrentModificationException caused by ning instrumentation that manifests in Mule instrumentation that causes the request it affects to be retried and the Java agent to not report header data.
- Fixes an issue where if enable_auto_app_naming was set to true and distributed_tracing.enabled was set to true it would sample every distributed trace event. Now if the agent has both configs enabled, it will not turn on distributed tracing.
Fixes in 4.5.0
- Fixes an issue where OKHttp 3 was not tracking external total time correctly.
- Fixes an issue where for some JDBC drivers, the agent would execute additional getMetaData queries..
- Fixes an issue with the agent’s Scala instrumentation that could result in incorrect throughput, invalid or negative data in transaction segments, or inability to ignore status codes.
- Fixes an issue with the play-ws instrumentation that caused ClassNotFound exceptions to occur in the agent logs when withHeaders is used. This could result incomplete transactions and attributes in RPM.
Fixes in 4.6.0
- Fixes an issue where the agent could cause an application deadlock when two tokens are created and linked from the other’s thread. This affects users of the New Relic token API and also users of the Hystrix framework.
- Fixes an issue where the agent would not capture JMX Datasource information from Tomcat when JDNI GlobalNamingResources is used.
Fixes in 4.7.0
- None
Fixes in 4.8.0
- Fixed an issue where the agent would break webpage rendering by inserting New Relic Browser monitoring javascript into the
<header>
tag of pages which were missing<head>
tags. - Certain frameworks, like Spring Cloud Gateway, triggered a bug in the Spring webflux instrumentation, causing transactions to stay open until they timed out. This bug resulted in more memory pressure and looked like a memory leak. This has been fixed in this release.
- Fixed an issue where the agent would stop reporting to New Relic following a ForceDisconnectException and accumulate transaction data resulting in OutOfMemory Exceptions.
- The agent now validates that app_names only contains three application names. If the agent is configured to report more than three application names, the agent will log a warning message and stop reporting to New Relic.
- When a custom WSRequestFilter is used that modifies an outbound play-ws request, the agent would report overly long segments due to Segment timeouts and will also result in a loss of External/ metrics. This has been fixed.
Fixes in 4.9.0
Fixes a possible NullPointerException that could occur in Hystrix instrumentation and propagate into application code.
Fixes a bug where usage of the HttpsURLConnection getInputStream() method could cause some scoped external metrics to be double-counted.
Fixes an issue that prevents the agent from connecting to an HTTP proxy that does not requires a username or password.
When configured to use an HTTP proxy by using proxy_host and proxy_port, the agent would look for proxy_username and proxy_password. If those weren't provided, the agent would use an empty string for proxy_username and proxy_password.
Prevents unnecessary dependencies from showing up in the newrelic-agent pom
Fixes deadlocks occurring in agent 4.7.0 that were caused by instrumentation of classes in the sun/nio/cs/.* package
Fixes an issue where custom jmx metrics with '.'s in the attribute name would not get recorded.
Fixes in 4.11.0
- Fixes an issue where applications using neo4j bolt JDBC driver could fail to start.
- "log_daily" configuration did not respect documented precedence
- Fixes a bug that caused the Spring Webflux instrumentation to fail to apply for spring-webflux versions greater than 5.0.*
- Fixes an issue where transactions would not be fully reported if distributed_tracing.enabled = true and cross_application_tracer.enabled = false
- Fixes an issue where Akka Http application would not start with the agent attached when using sbt
- Fixes an issue where the agent could fail to determine the Hostname
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 andlog_file_count
equal to 1 would result in the agent not logging to the agent log file.
Improvements
Jersey Client
The agent now provides instrumentation for Jersey Client versions 1.x and 2.x. You will see your calls using the Jersey Client APIs as Externals in New Relic, whether you are using the synchronous or reactive client API.
request.uri
collected as an agent attributeYou can now control the collection of
request.uri
on errors and transaction Traces you would other attributes. For more information on agent attributes see here.
Fixes
- Fixes a bug in Jersey 2 instrumentation where external segments could time out, causing an abnormally large "total time" for a transaction. This bug would occur if a client disconnected while being sent a response or if an unstable network is in place where an IOException occurs during response.
- In some cases, the agent may have incorrectly reported the transaction thread name to New Relic as "New Relic Token Expiration Handler".
- Agent was incorrectly bundling javax.xml and jregex packages
- Fixes an issue in the Wildfly instrumentation that could cause async servlet transactions to go unreported.
Improvements
- Websphere 9
With this release, the Java agent now supports Websphere 9, both Traditional and Liberty Profile.
More information on how to install and configure the Java agent on Websphere can be found here: IBM WebSphere Application Server.
Bug Fixes
- Fixes a potential deadlock scenario caused by the Java agent in high throughput applications running on Vert.x.
- Usage of the
setNull()
method on the JDBC interface now reports upnull
in the query string sent to New Relic, instead of incorrectly reporting up thesqlType
as the value. - Fixes a JVM crash that can occur when running the Java agent with the non-default
spring-aop-2
instrumentation enabled.
Improvements
- RabbitMQ
The agent now provides instrumentation for RabbitMQ 5.0.
Note:
This release changes instrumentation for all supported versions of RabbitMQ to use the exchange name instead of routing keys for the transaction name and produce/consume metrics. This should provide more meaningful transaction names, but will change what transactions you see in New Relic.
Now reports queue purge
No longer reports misleading MessageBroker consume metric for callbacks/message listeners
Adds message properties to tracer attributes, and a configuration to disable them:
message_tracer:segment_parameters:enabled: false
Bug Fixes
- Exceptions thrown within scala Future/CallbackRunnable code could cause inaccurate transaction times
- Deadlock could occur when tracking asynchronous activity in Vert.x.