• EnglishEspañol日本語한국어Português
  • Inicia sesiónComenzar ahora

Java agent release notesRSS

July 11
Java agent v8.13.0

Download this agent version

New features and improvements

Fixes

  • Fix R2dbc postgresql 0.9.2 instrumentation to prevent memory leaks 1916
  • Update vertx-web instrumentation to start transactions for HTTP/2 requests 1959
  • Update JFR Instance Naming to display correct number of JVMs 1928
  • Close instrumentation gap for akka-http 10.2.0+ 1955
  • Start transactions in the Jetty12 core server 1950
  • Clean up dtTracers and externalTracers after exceptions to prevent memory leaks 1902
  • Add security-related class excludes during normal class transformer creation 1918
  • Add null checks to vertx 4.5.1 instrumentation 1927

IAST

Deprecations

  • The browser footer injection APIs have been deprecated and will be removed in a future agent release. The header injection API now adds both the header and footer scripts. 1679

The following instrumentation modules are deprecated and will be removed in the next major release:

  • aws-wrap-0.7.0
  • java.completable-future-jdk8
  • play-2.3
  • spring-3.0.0
  • netty-3.4
  • Struts v1

Update to latest version

To identify which version of the Java agent you're currently using, run java -jar newrelic.jar -v. Your Java agent version will be printed to your console.

Then, to update to the latest Java agent version:

  1. Back up the entire Java agent root directory to another location. Rename that directory to NewRelic_Agent#.#.#, where #.#.# is the agent version number.
  2. Download the agent..
  3. Unzip the new agent download file, then copy newrelic-api.jar and newrelic.jar into the original Java agent root directory.
  4. Compare your old newrelic.yml with the newly downloaded newrelic.yml from the zip, and update the file if needed.
  5. Restart your Java dispatcher.

If you experience issues after the Java agent update, restore from the backed-up New Relic agent directory.

Update agent config differences

We add new settings to newrelic.yml as we release new versions of the agent. You can use diff or another diffing utility to see what's changed, and add the new config settings to your old file. Make sure not to overwrite any customizations you've made to the file, such as your license key, app name, or changes to default settings.

For example, if you diff the default newrelic.yml files for Java agent versions 7.10.0 and 7.11.0, the results printed to the console will be like:

➜ diff newrelic_7.10.0.yml newrelic_7.11.0.yml
...
107a108,119
> # Whether the log events should include context from loggers with support for that.
> include_context_data:
>
> # When true, application logs will contain context data.
> enabled: false
>
> # A comma separated list of attribute keys whose values should be sent to New Relic.
> #include:
>
> # A comma separated list of attribute keys whose values should not be sent to New Relic.
> #exclude:
>
125a138
>
128c141
< enabled: false
---
> enabled: true
...

In this example, these lines were added to the default newrelic.yml in Java agent version 7.11.0. If you're moving to 7.11.0 or higher, you should add these new lines to your original newrelic.yml.

Support statement:

  • New Relic recommends that you upgrade the agent regularly to ensure that you're getting the latest features and performance benefits. Additionally, older releases will no longer be supported when they reach end-of-life.

May 23
Java agent v8.12.0

New features and improvements

  • Add support for Java 22 1819
  • Add AI Monitoring support for AWS SDK for Java v2 Bedrock Runtime Client versions 2.20.157 and above 1837
  • Enhance log forwarding to include caused by section 1857
  • Add support for Pekko Http 1850
  • Add local decorating for Log4j 2 users utilizing JsonTemplateLayout 1866
  • Performance improvements on SQL checks 1887

Fixes

  • Resolve various thread hopping issues with Spring Reactor call chains 1883
  • Refactor the daily logfile rolling job to support all platforms 1888
  • Fix Ning memory leak 1903

IAST

Deprecations

  • The browser footer injection APIs have been deprecated and will be removed in a future agent release. The header injection API now adds both the header and footer scripts. 1679

  • The following instrumentation modules are deprecated and will be removed in the next major release:

    • aws-wrap-0.7.0
    • java.completable-future-jdk8
    • play-2.3
    • spring-3.0.0
    • netty-3.4
    • Struts v1

Update to latest version

To identify which version of the Java agent you're currently using, run java -jar newrelic.jar -v. Your Java agent version will be printed to your console.

Then, to update to the latest Java agent version:

  1. Back up the entire Java agent root directory to another location. Rename that directory to NewRelic_Agent#.#.#, where #.#.# is the agent version number.
  2. Download the agent..
  3. Unzip the new agent download file, then copy newrelic-api.jar and newrelic.jar into the original Java agent root directory.
  4. Compare your old newrelic.yml with the newly downloaded newrelic.yml from the zip, and update the file if needed.
  5. Restart your Java dispatcher.

If you experience issues after the Java agent update, restore from the backed-up New Relic agent directory.

Update agent config differences

We add new settings to newrelic.yml as we release new versions of the agent. You can use diff or another diffing utility to see what's changed, and add the new config settings to your old file. Make sure not to overwrite any customizations you've made to the file, such as your license key, app name, or changes to default settings.

For example, if you diff the default newrelic.yml files for Java agent versions 7.10.0 and 7.11.0, the results printed to the console will be like:

➜ diff newrelic_7.10.0.yml newrelic_7.11.0.yml
...
107a108,119
> # Whether the log events should include context from loggers with support for that.
> include_context_data:
>
> # When true, application logs will contain context data.
> enabled: false
>
> # A comma separated list of attribute keys whose values should be sent to New Relic.
> #include:
>
> # A comma separated list of attribute keys whose values should not be sent to New Relic.
> #exclude:
>
125a138
>
128c141
< enabled: false
---
> enabled: true
export const _frontmatter = {"subject":"Java agent","releaseDate":"2024-05-23","version":"8.12.0","downloadLink":"https://download.newrelic.com/newrelic/java-agent/newrelic-agent/8.12.0/","features":["“Add Support for Java 22”","“Add AI Monitoring Support or Java v2 Bedrock Runtime Client versions 2.20.157 and above”","“Add support for Pekko Http”","“Enhance log forwarding to include ‘caused by’ section”"],"bugs":["“Resolve various thread hopping issues with Spring Reactor call chains”","“Refactor the daily logfile rolling job to support all platforms”","“Fix Ning memory leak”"],"security":[]}

April 25
Java agent v8.11.1

Features

  • Update Security Agent to Public Release version 1.2.1

Deprecations

  • The browser footer injection APIs have been deprecated and will be removed in a future agent release. The header injection API now adds both the header and footer scripts. 1679

The following instrumentation modules are deprecated and will be removed in the next major release:

  • aws-wrap-0.7.0
  • java.completable-future-jdk8
  • play-2.3
  • spring-3.0.0
  • netty-3.4
  • Struts v1

IAST

Update to latest version

To identify which version of the Java agent you're currently using, run java -jar newrelic.jar -v. Your Java agent version will be printed to your console.

Then, to update to the latest Java agent version:

  1. Back up the entire Java agent root directory to another location. Rename that directory to NewRelic_Agent#.#.#, where #.#.# is the agent version number.
  2. Download the agent..
  3. Unzip the new agent download file, then copy newrelic-api.jar and newrelic.jar into the original Java agent root directory.
  4. Compare your old newrelic.yml with the newly downloaded newrelic.yml from the zip, and update the file if needed.
  5. Restart your Java dispatcher.

If you experience issues after the Java agent update, restore from the backed-up New Relic agent directory.

Update agent config differences

We add new settings to newrelic.yml as we release new versions of the agent. You can use diff or another diffing utility to see what's changed, and add the new config settings to your old file. Make sure not to overwrite any customizations you've made to the file, such as your license key, app name, or changes to default settings.

For example, if you diff the default newrelic.yml files for Java agent versions 7.10.0 and 7.11.0, the results printed to the console will be like:

➜ diff newrelic_7.10.0.yml newrelic_7.11.0.yml
...
107a108,119
> # Whether the log events should include context from loggers with support for that.
> include_context_data:
>
> # When true, application logs will contain context data.
> enabled: false
>
> # A comma separated list of attribute keys whose values should be sent to New Relic.
> #include:
>
> # A comma separated list of attribute keys whose values should not be sent to New Relic.
> #exclude:
>
125a138
>
128c141
< enabled: false
---
> enabled: true
...

In this example, these lines were added to the default newrelic.yml in Java agent version 7.11.0. If you're moving to 7.11.0 or higher, you should add these new lines to your original newrelic.yml.

Support statement:

  • New Relic recommends that you upgrade the agent regularly to ensure that you're getting the latest features and performance benefits. Additionally, older releases will no longer be supported when they reach end-of-life.

April 11
Java agent v8.11.0

New features and improvements

  • Add HTTP/2 support for Netty 4.1.16.Final + 1815

  • Support external calls inside Spring Reactor call chains 1828

  • Support for Apache Pekko (i.e. the pekko-actor library). Support for Pekko HTTP coming soon. 1811

  • Add configuration to allow the OTel SDK integration to be completely disabled 1821

    Configuration via yaml:

    opentelemetry:
    sdk:
    autoconfigure:
    enabled: false

    Configuration via system property:

    -Dnewrelic.config.opentelemetry.sdk.autoconfigure.enabled=false
  • Treat OpenTelemetry @WithSpan annotation as @Trace in the Java Agent API 1841

Fixes

  • Fix high CPU usage with HttpURLConnection by reverting InboundWrapper changes introduced in 8.10.0 1840
  • Prevent duplicate HTTP external calls when using the DynamoDB SDK 1827

Deprecations

  • The browser footer injection APIs have been deprecated and will be removed in a future agent release. The header injection API now adds both the header and footer scripts. 1679

The following instrumentation modules are deprecated and will be removed in the next major release:

  • aws-wrap-0.7.0
  • java.completable-future-jdk8
  • play-2.3
  • spring-3.0.0
  • netty-3.4
  • Struts v1

IAST

Changes

  • Json Version bump to 1.2.0 207
  • IAST replay header decryption due to Security Findings 207

Fixes

  • Fix issue related to the instrumentation of the Rhino JavaScript Engine that occurred while reading the script 211

Update to latest version

To identify which version of the Java agent you're currently using, run java -jar newrelic.jar -v. Your Java agent version will be printed to your console.

Then, to update to the latest Java agent version:

  1. Back up the entire Java agent root directory to another location. Rename that directory to NewRelic_Agent#.#.#, where #.#.# is the agent version number.
  2. Download the agent.
  3. Unzip the new agent download file, then copy newrelic-api.jar and newrelic.jar into the original Java agent root directory.
  4. Compare your old newrelic.yml with the newly downloaded newrelic.yml from the zip, and update the file if needed.
  5. Restart your Java dispatcher.

If you experience issues after the Java agent update, restore from the backed-up New Relic agent directory.

Update agent config differences

We add new settings to newrelic.yml as we release new versions of the agent. You can use diff or another diffing utility to see what's changed, and add the new config settings to your old file. Make sure not to overwrite any customizations you've made to the file, such as your license key, app name, or changes to default settings.

For example, if you diff the default newrelic.yml files for Java agent versions 7.10.0 and 7.11.0, the results printed to the console will be like:

➜ diff newrelic_7.10.0.yml newrelic_7.11.0.yml
...
107a108,119
> # Whether the log events should include context from loggers with support for that.
> include_context_data:
>
> # When true, application logs will contain context data.
> enabled: false
>
> # A comma separated list of attribute keys whose values should be sent to New Relic.
> #include:
>
> # A comma separated list of attribute keys whose values should not be sent to New Relic.
> #exclude:
>
125a138
>
128c141
< enabled: false
---
> enabled: true
...

In this example, these lines were added to the default newrelic.yml in Java agent version 7.11.0. If you are moving to 7.11.0 or higher, you should add these new lines to your original newrelic.yml.

Support statement:

  • New Relic recommends that you upgrade the agent regularly to ensure that you're getting the latest features and performance benefits. Additionally, older releases will no longer be supported when they reach end-of-life.

March 28
Java agent v8.10.0

Advertencia

This version of the agent introduced a bug that can cause significant CPU and memory usage increases and potential deadlocks if your application uses HttpUrlConnection or any libraries that use it under the hood. Agent version 8.11.0 fixes this problem. Alternatively, disabling the HttpUrlConnection instrumentation would prevent the issue. For example, -Dnewrelic.config.class_transformer.com.newrelic.instrumentation.httpurlconnection.enabled=false.

Disabling this instrumentation will have the effect that the client's external calls will not be recorded. We strongly recommend that you use the latest agent versions. They include all the latest code fixes and provide access to the latest platform features.

New features and improvements

  • Support for Spring Webflux 6.1.x 1761
  • Support for Spring Batch v4.0+ 1792
  • Scala 3 API 1772
  • ZIO 1 instrumentation improvements 1739
  • Support for ZIO 2 1778
  • Enhanced clustered Solr JMX metrics 1812
  • Add transaction GUID to Errors 1813

Fixes

  • Prevent NullPointerException when setting the user id outside of a transaction 1762
  • Disallow Real Time Profiling when High Security Mode is enabled 1764
  • Prevent ClassCircularityErrors in some specific circumstances 1763
  • Properly removing files when log_daily is enabled 1754
  • Decreased memory held by the agent when HTTP calls are made 1775
  • Prevent duplicate DT headers for gRPC 1783
  • Properly updating how many log messages are sent after configuration change 1784
  • Prevent exceptions when reading lambda bytecode 1794
  • Reduce interval for JDBC caches 1809

Deprecations

  • The browser footer injection APIs have been deprecated and will be removed in a future agent release. The header injection API now adds both the header and footer scripts. 1679

The following instrumentation modules are deprecated and will be removed in the next major release:

  • aws-wrap-0.7.0
  • java.completable-future-jdk8
  • play-2.3
  • spring-3.0.0
  • netty-3.4
  • Struts v1

IAST

Changes

  • Ning Async HTTP client Support: The security agent now also supports com.ning:async-http-client 1.0.0 and higher 152, 118, 116
  • Jersey Support: The security agent now also supports Jersey 2.0 and higher 150, 149
  • Mule Support: The security agent now also supports Mule server version 3.6 to 3.9.x 144, 143
  • Jetty v12 Support: The security agent now also support Jetty version 12 and higher 106
  • Lettuce Support: The security agent now also supports Lettuce 4.4.0.Final and higher 125

Fixes

  • Extract Server Configuration to resolve IAST localhost connection with application for Wildfly server 192
  • Trustboundary events now will have list of string as parameter schema

Update to latest version

To identify which version of the Java agent you're currently using, run java -jar newrelic.jar -v. Your Java agent version will be printed to your console.

Then, to update to the latest Java agent version:

  1. Back up the entire Java agent root directory to another location. Rename that directory to NewRelic_Agent#.#.#, where #.#.# is the agent version number.
  2. Download the agent.
  3. Unzip the new agent download file, then copy newrelic-api.jar and newrelic.jar into the original Java agent root directory.
  4. Compare your old newrelic.yml with the newly downloaded newrelic.yml from the zip, and update the file if needed.
  5. Restart your Java dispatcher.

If you experience issues after the Java agent update, restore from the backed-up New Relic agent directory.

Update agent config differences

We add new settings to newrelic.yml as we release new versions of the agent. You can use diff or another diffing utility to see what's changed, and add the new config settings to your old file. Make sure not to overwrite any customizations you've made to the file, such as your license key, app name, or changes to default settings.

For example, if you diff the default newrelic.yml files for Java agent versions 7.10.0 and 7.11.0, the results printed to the console will be like:

➜ diff newrelic_7.10.0.yml newrelic_7.11.0.yml
...
107a108,119
> # Whether the log events should include context from loggers with support for that.
> include_context_data:
>
> # When true, application logs will contain context data.
> enabled: false
>
> # A comma separated list of attribute keys whose values should be sent to New Relic.
> #include:
>
> # A comma separated list of attribute keys whose values should not be sent to New Relic.
> #exclude:
>
125a138
>
128c141
< enabled: false
---
> enabled: true
...

In this example, these lines were added to the default newrelic.yml in Java agent version 7.11.0. If you're moving to 7.11.0 or higher, you should add these new lines to your original newrelic.yml.

Support statement:

  • New Relic recommends that you upgrade the agent regularly to ensure that you're getting the latest features and performance benefits. Additionally, older releases will no longer be supported when they reach end-of-life.

February 8
Java agent v8.9.1

Fixes

  • Check HttpHost instance for null before dereferencing it when certain execute() methods are called 1722
  • Do an instanceof check in the complete() method before class cast 1719
  • Null check on the response object before trying to report an external call 1719

Deprecations

  • The browser footer injection APIs have been deprecated and will be removed in a future agent release. The header injection API now adds both the header and footer scripts. 1679

The following instrumentation modules are deprecated and will be removed in the next major release:

  • aws-wrap-0.7.0
  • java.completable-future-jdk8
  • play-2.3
  • spring-3.0.0
  • netty-3.4
  • Struts v1

Update to the latest version

To identify which version of the Java agent you're currently using, run java -jar newrelic.jar -v. Your Java agent version will be printed to your console.

Then, to update to the latest Java agent version:

  1. Back up the entire Java agent root directory to another location. Rename that directory to NewRelic_Agent#.#.#, where #.#.# is the agent version number.
  2. Download the agent.
  3. Unzip the new agent download file, then copy newrelic-api.jar and newrelic.jar into the original Java agent root directory.
  4. Compare your old newrelic.yml with the newly downloaded newrelic.yml from the zip, and update the file if needed.
  5. Restart your Java dispatcher.

If you experience issues after the Java agent update, restore from the New Relic agent directory backed up.

Update agent config differences

We add new settings to newrelic.yml as we release new agent versions. You can use diff or another diffing utility to see what's changed and add the new config settings to your old file. Make sure not to overwrite any customizations you've made to the file, such as your license key, app name, or changes to default settings.

For example, if you diff the default newrelic.yml files for Java agent versions 7.10.0 and 7.11.0, the results printed to the console will be like this:

➜ diff newrelic_7.10.0.yml newrelic_7.11.0.yml
...
107a108,119
> # Whether the log events should include context from loggers with support.
> include_context_data:
>
> # When true, application logs will contain context data.
> enabled: false
>
> # A comma separated list of attribute keys whose values should be sent to New Relic.
> #include:
>
> # A comma separated list of attribute keys whose values should not be sent to New Relic.
> #exclude:
>
125a138
>
128c141
< enabled: false
---
> enabled: true
...

In this example, these lines were added to the default newrelic.yml in Java agent version 7.11.0. If you are moving to 7.11.0 or higher, add these new lines to your original newrelic.yml.

Support statement:

  • New Relic recommends that you upgrade the agent regularly to ensure you get the latest features and performance benefits. Additionally, older releases will no longer be supported when they reach end-of-life.

January 31
Java agent v8.9.0

New features and improvements

  • Instrumentation for Spring Webclient 5/6 now captures http status code and http status message 1658
  • Add status code to grpc-1.40.0 client instrumentation 1673
  • Add config to set the size limit of attributes on custom events (i.e. newrelic.config.custom_insights_events.max_attribute_value). Default size is 255 characters and the max is 4095. 1683
  • Add Spring instrumentation modules to support proper transaction naming (route + HTTP method) of traditional annotated spring controllers as well as controllers that inherit annotations from interfaces, super classes or custom annotations. Note that because the new instrumentation can change transaction names, enabling this "enhanced transaction naming" is gated by the newrelic.config.class_transformer.enhanced_spring_transaction_naming agent configuration option, which is false by default. Thanks to @mgr32 for their help with validating the naming changes. 1675
  • Add instrumentation for Vert.x 4.5.x web client and futures 1704

Fixes

  • Remove erroneous printing of stack trace in SlowTransactionManager 1684
  • Convert the ProcessPointCut over to a weaver instrumentation module to better handle cases where it is used in a multi-threaded environment. 1685

Removals

  • Remove support for setting agent config with rarely used lower-case, dotted environment variable names (e.g. newrelic.config.labels). Customers relying on lower-case, dotted environment variables should switch to the standard upper-case, underscore names (e.g. NEW_RELIC_CONFIG_LABELS). There are no changes to documented system property behavior (via newrelic.config., server-side config, YAML, or standard environment variable (via NEW_RELIC_). 1598

Deprecations

  • The browser footer injection APIs have been deprecated and will be removed in a future agent release. The header injection API now adds both the header and footer scripts. 1679

The following instrumentation modules are deprecated and will be removed in the next major release:

  • aws-wrap-0.7.0
  • java.completable-future-jdk8
  • play-2.3
  • spring-3.0.0
  • netty-3.4
  • Struts v1

IAST

Update to latest version

To identify which version of the Java agent you're currently using, run java -jar newrelic.jar -v. Your Java agent version will be printed to your console.

Then, to update to the latest Java agent version:

  1. Back up the entire Java agent root directory to another location. Rename that directory to NewRelic_Agent#.#.#, where #.#.# is the agent version number.
  2. Download the agent.
  3. Unzip the new agent download file, then copy newrelic-api.jar and newrelic.jar into the original Java agent root directory.
  4. Compare your old newrelic.yml with the newly downloaded newrelic.yml from the zip, and update the file if needed.
  5. Restart your Java dispatcher.

If you experience issues after the Java agent update, restore from the backed-up New Relic agent directory.

Update agent config differences

We add new settings to newrelic.yml as we release new versions of the agent. You can use diff or another diffing utility to see what's changed, and add the new config settings to your old file. Make sure not to overwrite any customizations you've made to the file, such as your license key, app name, or changes to default settings.

For example, if you diff the default newrelic.yml files for Java agent versions 7.10.0 and 7.11.0, the results printed to the console will be like:

➜ diff newrelic_7.10.0.yml newrelic_7.11.0.yml
...
107a108,119
> # Whether the log events should include context from loggers with support for that.
> include_context_data:
>
> # When true, application logs will contain context data.
> enabled: false
>
> # A comma separated list of attribute keys whose values should be sent to New Relic.
> #include:
>
> # A comma separated list of attribute keys whose values should not be sent to New Relic.
> #exclude:
>
125a138
>
128c141
< enabled: false
---
> enabled: true
...

In this example, these lines were added to the default newrelic.yml in Java agent version 7.11.0. If you are moving to 7.11.0 or higher, you should add these new lines to your original newrelic.yml.

Support statement:

  • New Relic recommends that you upgrade the agent regularly to ensure that you're getting the latest features and performance benefits. Additionally, older releases will no longer be supported when they reach end-of-life.

January 18
Java agent v8.8.1

Fixes

  • Fixed a NullPointerException when working with Synthetics headers 1690

Deprecations

The following instrumentation modules are deprecated and will be removed in the next major release:

  • aws-wrap-0.7.0
  • java.completable-future-jdk8
  • play-2.3
  • spring-3.0.0
  • netty-3.4
  • Struts v1

Update to latest version

To identify which version of the Java agent you're currently using, run java -jar newrelic.jar -v. Your Java agent version will be printed to your console.

Then, to update to the latest Java agent version:

  1. Back up the entire Java agent root directory to another location. Rename that directory to NewRelic_Agent#.#.#, where #.#.# is the agent version number.
  2. Download the agent.
  3. Unzip the new agent download file, then copy newrelic-api.jar and newrelic.jar into the original Java agent root directory.
  4. Compare your old newrelic.yml with the newly downloaded newrelic.yml from the zip, and update the file if needed.
  5. Restart your Java dispatcher.

If you experience issues after the Java agent update, restore from the backed-up New Relic agent directory.

Update agent config differences

We add new settings to newrelic.yml as we release new versions of the agent. You can use diff or another diffing utility to see what's changed, and add the new config settings to your old file. Make sure not to overwrite any customizations you've made to the file, such as your license key, app name, or changes to default settings.

For example, if you diff the default newrelic.yml files for Java agent versions 7.10.0 and 7.11.0, results such as below will print to the console:

➜ diff newrelic_7.10.0.yml newrelic_7.11.0.yml
...
107a108,119
> # Whether the log events should include context from loggers with support for that.
> include_context_data:
>
> # When true, application logs will contain context data.
> enabled: false
>
> # A comma separated list of attribute keys whose values should be sent to New Relic.
> #include:
>
> # A comma separated list of attribute keys whose values should not be sent to New Relic.
> #exclude:
>
125a138
>
128c141
< enabled: false
---
> enabled: true
...

In this example, these lines were added to the default newrelic.yml in Java agent version 7.11.0. If you are moving to 7.11.0 or higher, you should add these new lines to your original newrelic.yml.

Support statement:

  • New Relic recommends that you upgrade the agent regularly to ensure that you're getting the latest features and performance benefits. Additionally, we will no longer support older releases once they reach end-of-life.

December 21, 2023
Java agent v8.8.0

New features and improvements

  • Add support for Jetty 12, including Jetty’s implementation of the Jakarta EE 8, 9, and 10 specs. 1621
  • Add support for Vert.x versions 4.0.0 through 4.4.x 1588
  • Add instrumentation for graphql-java 21 1454
  • Instrument r2dbc-postgresql 0.9.2 till latest 1413
  • Reintroduce the legacy HTTP Attributes that were removed in v8.0.0 to support customers with alerts and dashboards that require them 1671 The attributes are:
  • httpResponseCode
  • httpResponseMessage
  • response.status
  • response.statusMessage

Attribute reporting is configurable via the following means.

YAML:

attributes:
http_attribute_mode: both

System property:

-Dnewrelic.config.attributes.http_attribute_mode=both

Environment variable:

NEW_RELIC_ATTRIBUTES_HTTP_ATTRIBUTE=both

The configuration options are:

  • standard : The agent will send new standard attributes. This configuration is recommended but requires that any alerts or dashboards using attributes be updated to use these new attributes. This setting will reduce the amount of ingest used for attribute reporting.

  • legacy : The agent will send the legacy attributes referenced above. Customers with alerts or dashboard requiring these attributes can continue to be used as-is. This setting will reduce the amount of ingest used for attribute reporting.

  • both : This is the default configuration, the agent will send BOTH legacy AND standard HTTP attributes. This configuration was intended to support customers that are unable to modify their alerts or dashboards but this configuration will increase data ingest.

  • Add an interface for our error API. Our error API can now be called via the code NewRelic.getAgent().getErrorApi() 1577

  • Add log4j2 JsonLayout support and support log4j2 till latest. 1545

  • Add httpstatus in the external segment for Spring Webclient 1610

  • Enable slow transaction detection by default and bump the threshold to 10 minutes 1629

  • Add support for string formatting with JBoss Logging. 1650

  • Add logic to remove specific classes from being excluded from being weaved if the IAST security feature is enabled. 1453

The affected classes belong in the following formats:

  • ^java/security/.*
  • ^javax/crypto/.* These are crypto classes which can cause class circularity errors if they get too far along in the class transformer.
  • ^net/sf/saxon.*

If you wish to re-include these excluded rules, you can do so via the following means.

YAML:

class_transformer:
excludes: ^javax/crypto/.*,^java/security/.*,^net/sf/saxon.*

System property:

-Dnewrelic.config.class_transformer.excludes=^javax/crypto/.*,^java/security/.*,^net/sf/saxon.*

Environment variable:

NEW_RELIC_CLASS_TRANSFORMER_EXCLUDES=^javax/crypto/.*,^java/security/.*,^net/sf/saxon.*
  • Prevent license_key value from being written to the agent logs when using debug and/or audit_mode logging 1653

IAST

  • The IAST feature now also supports Async HTTP client version 2 and above 142
  • Added support for Sun Net HTTP Server 142
  • JSON version bump to 1.1.1 142
  • Add critical error logging via LogMessage event 142

Fixes

  • Fix transaction naming in Spring controllers with a CGLIB proxy. Transactions now use the actual class name as opposed to the proxied class name. 1574
  • Fix a NullPointerException caused by ServletContext in servlet instrumentation modules. 1636
  • Fix a memory leak caused by Lettuce instrumentation. Duplicate code for transaction linking has been removed from the Lettuce instrumentation and is handled by netty-reactor instead. 1608
  • Fix a bug where invalidating a license key causes a memory leak. Reconnection tasks are now capped in the event of a LicenseException. 1606
  • Fix a NullPointerException caused by RPMServiceManager 1604
  • Add a workaround for a memory leak that may occur in rare scenarios with instrumentation using the legacy async API in the Java Agent (which async servlets and Jetty Continuations use). 1555

You can configure the option via the following means:

Agent config file (this will update dynamically if the config file is changed)

common: &default_settings
legacy_async_api_skip_suspend: true

System Property

-Dnewrelic.config.legacy_async_api_skip_suspend=true

Environment Variable

NEW_RELIC_LEGACY_ASYNC_API_SKIP_SUSPEND=true

IAST

  • DynamoDB v2 issue: missing attribute values for conditionCheck method in case of transactWriteItems operation on DynamoDB 142

  • Fixed an Insecure cookie attack vulnerability. 142

  • Never print LicenseKey 142

Deprecations

The following instrumentation modules are deprecated and will be removed in the next major release:

  • aws-wrap-0.7.0
  • java.completable-future-jdk8
  • play-2.3
  • spring-3.0.0
  • netty-3.4
  • Struts v1

Update to latest version

To identify which version of the Java agent you're currently using, run java -jar newrelic.jar -v. Your Java agent version will be printed to your console.

Then, to update to the latest Java agent version:

  1. Back up the entire Java agent root directory to another location. Rename that directory to NewRelic_Agent#.#.#, where #.#.# is the agent version number.
  2. Download the agent.
  3. Unzip the new agent download file, then copy newrelic-api.jar and newrelic.jar into the original Java agent root directory.
  4. Compare your old newrelic.yml with the newly downloaded newrelic.yml from the zip, and update the file if needed.
  5. Restart your Java dispatcher.

If you experience issues after the Java agent update, restore from the backed-up New Relic agent directory.

Update agent config differences

We add new settings to newrelic.yml as we release new versions of the agent. You can use diff or another diffing utility to see what's changed, and add the new config settings to your old file. Make sure not to overwrite any customizations you've made to the file, such as your license key, app name, or changes to default settings.

For example, if you diff the default newrelic.yml files for Java agent versions 7.10.0 and 7.11.0, the results printed to the console will display:

➜ diff newrelic_7.10.0.yml newrelic_7.11.0.yml
...
107a108,119
> # Whether the log events should include context from loggers with support for that.
> include_context_data:
>
> # When true, application logs will contain context data.
> enabled: false
>
> # A comma separated list of attribute keys whose values should be sent to New Relic.
> #include:
>
> # A comma separated list of attribute keys whose values should not be sent to New Relic.
> #exclude:
>
125a138
>
128c141
< enabled: false
---
> enabled: true
...

In this example, these lines were added to the default newrelic.yml in Java agent version 7.11.0. If you are moving to 7.11.0 or higher, you should add these new lines to your original newrelic.yml.

Support statement:

  • New Relic recommends that you upgrade the agent regularly to ensure that you're getting the latest features and performance benefits. Additionally, older releases will no longer be supported when they reach end-of-life.

October 26, 2023
Java agent v8.7.0

New features and improvements

  • Adds support for Java 21 1546

  • Add experimental config option to run the agent with unsupported java versions 1480

  • Add intrinsic attribute thread.id to spans to allow for faceting queries by thread ID 1513

  • Include stack traces in client spans 1507

  • Adds support for getting the containerId from a docker container with Linux cgroup v2. 1529

  • Add database and external span attributes to correlate to metric data in accordance with Open Telemetry specs. Certain old attributes are removed. 1525

    New attributes:

    • db.system
    • db.operation
    • db.collection
    • server.address
    • server.port

    Removed attributes:

    • component
    • peer.hostname
  • Add slow transaction detection which can be configured. It is disabled by default. 1542 E.g:

    slow_transactions:
    enabled: true
    threshold: 1000 # The threshold is measured in milliseconds
  • Add instrumentation for r2dbc postgresql 0.9.2 to 0.9.x 1410

  • Security Agent: Add new configuration to enable/disable low priority instrumentation security.low-priority-instrumentation.enabled for the CSEC agent. Default value is false. 1515

  • Security Agent: Cassandra DB v3.0+ Support: The Security agent now supports Cassandra DB version 3.0 and above 122

  • Security Agent: HttpClient v5.0+ Support: The Security agent now also supports HttpClient version 5.0 and above 122

  • Security Agent: Support for std-out logging 122

  • Security Agent: Added feature for Daily log rollover 122

  • Security Agent: Support for logger config: log_file_count and log_limit_in_kbytes 122

  • Security Agent: Relocating all our instrumentation packages under the package com.newrelic.agent.security.instrumentation.* 122

Fixes

  • Fixed a bug where a ClassCircularityError was thrown by Sonarqube9.9 1522

  • Fix a bug where the Java agent fails to detect spring-security-oauth2-client.jar 1462

  • Fix a bug where Spring 6/ Spring Boot3 does not report underlying exception/stacktrace when a @RestControllerAdvice class is used 1538

  • Fix HttpUrlConnection instrumentation so segment timing is accurate 1537

  • Fixes a bug in Spring 6 instrumentation where transactions are incorrectly named in certain scenarios. 1544 Such include:

    • "built-in" controllers that don't have @RestController-like annotations, e.g. /actuator/health (see Actuator endpoints)
    • custom controllers that don't use @RestController directly (e.g. using custom annotations)
    • requests returning 401s / 404s
  • Add a fix for JBoss EAP / Wildfly where if customers are using the J2EE/Jakarta Management API, the application fails to startup. 1549 This is done by adding the system property com.newrelic.jboss.jsr77.fix and setting it to true. E.g.

    -Dcom.newrelic.jboss.jsr77.fix=true

    Customers using JBoss EAP 7.4+ or Wildfly 23+ will need to manually configure the io.undertow.servlet module and add java.management as a dependency. This translates to doing the following steps:

    1. Opening the file modules/system/layers/base/io/undertow/servlet/main/module.xml
    2. Adding the XML element <module name="java.management"/> inside the body of the <dependencies> tag

    Here is what the configured XML file may look like:

    <module name="io.undertow.servlet" xmlns="urn:jboss:module:1.9">
    <resources>
    <resource-root path="undertow-servlet-2.2.5.Final-redhat-00001.jar"/>
    </resources>
    <dependencies>
    <module name="javax.annotation.api"/>
    <module name="sun.jdk"/>
    <module name="javax.servlet.api"/>
    <module name="javax.servlet.jsp.api"/>
    <module name="javax.servlet.jstl.api"/>
    <module name="org.jboss.logging"/>
    <module name="io.undertow.core"/>
    <module name="org.jboss.xnio"/>
    <module name="jdk.unsupported"/>
    <module name="java.management"/>
    </dependencies>
    </module>
  • Resolve missing class exception on Scala instrumentation 1528

  • Security Agent: Fixed ClassNotFoundException for IOStreamHelper class with Glassfish 122

Security

  • Update agent dependency commons-codec to v1.13 1548
  • Update JFR daemon to 1.11.1. This upgrade updates the underlying OkHttp dependency to version 4.12.0 1561

Deprecations

The following instrumentation modules will be removed in the next major release:

  • aws-wrap-0.7.0
  • java.completable-future-jdk8
  • play-2.3
  • spring-3.0.0
  • netty-3.4
  • Struts v1

Update to latest version

To identify which version of the Java agent you're currently using, run java -jar newrelic.jar -v. Your Java agent version will be printed to your console.

Then, to update to the latest Java agent version:

  1. Back up the entire Java agent root directory to another location. Rename that directory to NewRelic_Agent#.#.#, where #.#.# is the agent version number.
  2. Download the agent.
  3. Unzip the new agent download file, then copy newrelic-api.jar and newrelic.jar into the original Java agent root directory.
  4. Compare your old newrelic.yml with the newly downloaded newrelic.yml from the zip, and update the file if needed.
  5. Restart your Java dispatcher.

If you experience issues after the Java agent update, restore from the backed-up New Relic agent directory.

Update agent config differences

We add new settings to newrelic.yml as we release new versions of the agent. You can use diff or another diffing utility to see what's changed, and add the new config settings to your old file. Make sure not to overwrite any customizations you've made to the file, such as your license key, app name, or changes to default settings.

For example, if you diff the default newrelic.yml files for Java agent versions 7.10.0 and 7.11.0, the results printed to the console will be like:

➜ diff newrelic_7.10.0.yml newrelic_7.11.0.yml
...
107a108,119
> # Whether the log events should include context from loggers with support for that.
> include_context_data:
>
> # When true, application logs will contain context data.
> enabled: false
>
> # A comma separated list of attribute keys whose values should be sent to New Relic.
> #include:
>
> # A comma separated list of attribute keys whose values should not be sent to New Relic.
> #exclude:
>
125a138
>
128c141
< enabled: false
---
> enabled: true
...

In this example, these lines were added to the default newrelic.yml in Java agent version 7.11.0. If you are moving to 7.11.0 or higher, you should add these new lines to your original newrelic.yml.

Support statement:

  • New Relic recommends that you upgrade the agent regularly to ensure that you're getting the latest features and performance benefits. Additionally, older releases will no longer be supported when they reach end-of-life.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.