Releases: newrelic/newrelic-java-agent
Version 8.25.0
What's Changed
- Adds Java 25 Support by @deleonenriqueta in 2512
- Adds support for Logback-1.5.20 by @jtduffy in 2535
- Introduces a config option to disable the execution of the
callandexecSQL parser regular expressions by @jtduffy in 2490 - Adds support for Kotlin Coroutines v1.4+ by @dhilpipre in 2454
- Adds support for Kotlin Coroutines Suspend Functions generated outside of Kotlin Coroutines by @dhilpipre in 2456
- Introduces a preference config for multiple hosts during datastore detection by @jbedell-newrelic in 2508
- Adds a system property to configure the artifact skip function by @jtduffy in 2509
- Adds a configuration option allowing Spring Controller transactions to be named using the controller class name and method name by @sharvath-newrelic in 2532
- Implement SamplerConfig, centralizing all
distributed_tracing.samplerconfigs into theSamplerConfigby @jasonjkeller in 2529 - Updated
kafka-clients-spans-0.11.0.0producer instrumentation to use modern distributed tracing API’s with W3C Trace Context support by @sharvath-newrelic in 2516
Fixes
- Fixes parsing of error class names by @sharvath-newrelic in 2497
- Fixed a potential memory issue caused by excessively large stack traces in error logging by @jtduffy in 2498
- Clarify logging messages for invalid attributes on custom events and logging events by @sharvath-newrelic in 2501
Deprecations
The following instrumentation modules are deprecated and will be removed in the next major release.
aws-wrap-0.7.0java.completable-future-jdk8play-2.3netty-3.4Struts v1spring-3.0.0thrift-0.8solr-4.0.0solr-5.0.0jdbc-inet-merliajdbc-inet-oranxograils-1.3rabbit-amqp-1.7.2rabbit-amqp-2.4.1rabbit-amqp-2.5.0rabbit-amqp-2.7.0glassfish-3hibernate-3.3hibernate-3.5jdbc-jtds
New Contributors
- @sharvath-newrelic made their first contribution in #2491
Full Changelog: v8.24.0...v8.25.0
Version 8.24.0
What's Changed
- Support MongoDB Reactive Streams 5.2.0 and up by @obenkenobi in #2465
- Jedis 6 support by @kanderson250 in #2466
- CouchBase: Add skip class to prevent double instrumentation by @jtduffy in #2462
- Spring WebClient 5.x: Only wrap headers instead of the entire response by @jtduffy in #2464
Full Changelog: v8.23.0...v8.24.0
Version 8.23.0
New features and improvements
- Update to support v24 of graphql by @jtduffy in 2425
- Add lettuce 6.5 instrumentation by @kanderson250 in 2430
- Bump commons-lang version to 3.18.0 by @jtduffy in 2421
- Add lettuce dbName to datastore params where available by @kanderson250 in 2423
- Add an environment variable to skip implementing certain applications. The environment variable name is
NEW_RELIC_STARTUP_JAVA_ARTIFACT_SKIPS. The value of it is a comma separated list of main classes, executable jar files or Java based tools/apps that the agent should NOT instrument (e.g.NEW_RELIC_STARTUP_JAVA_ARTIFACT_SKIPS=keytool,myapp.jar,IgnoreThisClass) by @jtduffy in 2433
Fixes
- Fix a bug where SQS messages with 8 attributes are not sent to AWS. SQS messages need less then 8 attributes to pass distributed trace headers by @obenkenobi in 2422
- Trim the "Subscriptions" bit off the end of the topic name in azure service bus client by @jbedell-newrelic in 2440
- Fix AutoConfiguredOpenTelemetrySdk config by @jasonjkeller in 2451
Deprecations
The following instrumentation modules are deprecated and will be removed in the next major release:
aws-wrap-0.7.0java.completable-future-jdk8play-2.3netty-3.4Struts v1
New Contributors
- @souhailaS made their first contribution in 2424
Full Changelog: v8.22.0...v8.23.0
Version 8.22.0
New features and improvements
- Azure ServiceBus 7.15.0 instrumentation by @jbedell-newrelic in 2384
- Linking metadata for Azure App services by @jbedell-newrelic in 2399
- Connection errors now logged at SEVERE by @jtduffy in 2377
- Log and obfuscate invalid keys added as attributes to logs and events by @jtduffy in 2388
- Remove MonoFlatMapMain Instrumentation by @deleonenriqueta in 2400
Fixes
- Relocate IntelliJ annotations library by @meiao in 2383
- Support server side sampling_target configuration by @jtduffy in 2386
Deprecations
The following instrumentation modules are deprecated and will be removed in the next major release:
aws-wrap-0.7.0java.completable-future-jdk8play-2.3netty-3.4Struts v1
Full Changelog: v8.21.0...v8.22.0
Version 8.21.0
New features and improvements
- Enhances visibility into Reactor
Mono.flatMapcalls by @deleonenriqueta in #2308 - Adds new instrumentation for Spring-Kafka and distributed tracing when using the core Kafka client library by @obenkenobi in #2312
- Adds
KafkaConsumerConfigevent support for Kafka 3.7+ by @nrlkirby in #2358
Fixes
-
Fixes the
distributed_tracing.samplerconfig by @jbedell-newrelic in #2330 -
Fixes an Illegal Access Error that can occur when using Scala 2.12 and JDK 11. In cases where Scala 2.12 is not detectable by the agent (we check the system classloader for this - notably, sbt will load Scala classes into custom Scala loaders), there is also a feature flag to manually enable the fix via system property
-Dnewrelic.config.class_transformer.illegal_access_fix=trueby @kanderson250 in #2334 -
Fix netty 'Unknown' transactions 2274 2355
- This fix moves previous netty instrumentation changes behind a feature flag, which provides additional visibility in some cases involving HTTP2 transactions. To reenable this granularity (at the possible cost of seeing ‘Unknown’ transactions), use the config setting:
netty: http2: frame_read_listener: start_transaction: true
- 8.20 has a logic error in the agent config so the fix is only official in agent version 8.21 and up.
-
Adds a restriction on when to add distributed trace headers for SQS messages. This is based on how large the contents of a message is in bytes and the and the size of attributes. Messages with size greater than 251 KB and/or with 9 or more attributes are excluded from getting distributed trace headers added by @obenkenobi in #2353
-
Allows the
org.cracJAR to be shadowed to prevent conflicts with customer environments. by @jbedell-newrelic in #2344 -
Backports changes made in PR #1927 to prevent
NullPointerExceptionsto older versions of thevertx-coreinstrumentation by @jgoulard in #2327 -
Prevents excessive transaction segments from being created by
HttpUrlConnectionmethod calls (e.g.getInputStream) when they are not associated with an external call. This behavior can be controlled by the following config options:NEW_RELIC_CLASS_TRANSFORMER_COM_NEWRELIC_INSTRUMENTATION_HTTPURLCONNECTION_VERBOSE=false, sys prop-Dnewrelic.config.class_transformer.com.newrelic.instrumentation.httpurlconnection.verbose=false, or equivalent stanza innewrelic.yml. Default setting istrue(i.e. non-externalgetInputStreamand other response handler methods will be reported as before). by @kanderson250 in #2365
Security
- Upgrades the
com.newrelic.agent.java:infinite-tracing-protobuffor better security with infinite tracing by @jtduffy in #2339 - Replaces
snakeyamlwithcom.konloch:safeyamlto address a security vulnerability by @jtduffy in #2333
Deprecations
The following instrumentation modules are deprecated and will be removed in the next major release:
aws-wrap-0.7.0java.completable-future-jdk8play-2.3netty-3.4Struts v1
IAST
CSEC Version Update to 1.7.0 by @lovesh-ap in #2348
Changelog: https://github.com/newrelic/csec-java-agent/releases/tag/1.7.0
Full Changelog: v8.20.0...v8.21.0
Version 8.20.0
New features and improvements
-
Support for CRaC 2250
-
Support for JDK24 2284
-
Add sampling options when an inbound traceparent exists 2279
- These options define how the agent should handle sampling of spans, depending on sampling decisions that were made for their parent span by an upstream entity. The configuration options
remote_parent_sampledandremote_parent_not_sampledspecify what to do in the case the parent span was sampled or not sampled, respectively. See the documentation for full configuration details.
- These options define how the agent should handle sampling of spans, depending on sampling decisions that were made for their parent span by an upstream entity. The configuration options
-
Support for Undertow as a stand-alone module 2269
- This instrumentation is disabled by default to avoid conflicts with existing Wildfly instrumentation. To enable this instrumentation for stand-alone Undertow server apps, use the configuration setting:
class_transformer: com.newrelic.instrumentation.undertow-server-1.1.0: enabled: true
-
Support for Couchbase Client 2203
- If the Couchbase Client Experimental Module is currently in use, remove it from your extensions directory before upgrading to this version of the Java Agent.
Fixes
-
Fix netty 'Unknown' transactions 2274This fix moves previous netty instrumentation changes behind a feature flag, which provides additional visibility in some cases involving HTTP2 transactions. To reenable this granularity (at the possible cost of seeing ‘Unknown’ transactions), use the config setting:
netty: http2: frame_read_listener: start_transaction: true
-
Refactor AWS docker id fetch to use 5s timeout 2275
-
Feature flag to apply Kotlin
ArrayIndexOutOfBoundsExceptionfix to all methods 2307- This fix addresses errors that may be seen when running the Java Agent in an environment where Kotlin suspends functions are used. To use this fix, set the system property
-Dnewrelic.config.class_transformer.clear_return_stacks=true
- This fix addresses errors that may be seen when running the Java Agent in an environment where Kotlin suspends functions are used. To use this fix, set the system property
-
Prevent cache lock for long DB statement parsing 2294
-
Add config to specify whether java.sql is loaded by platform classloader 2267
Deprecations
The following instrumentation modules are deprecated and will be removed in the next major release:
aws-wrap-0.7.0java.completable-future-jdk8play-2.3netty-3.4Struts v1
New Contributors
- @gsidhwani-nr made their first contribution in #2280
Full Changelog: v8.19.0...v8.20.0
Version 8.19.0
New features and improvements
- 2238 Support Adding Labels to APM Forwarded Logs by @deleonenriqueta
- 2246 Update Config File to Include APM Forwarded Log Labels Options by @deleonenriqueta
- 2243 Add response attributes for http4s server modules by @kanderson250
- 2230 Default proxy_scheme setting to "http" by @jtduffy
- 2259 Add support for server-side application logging configs by @obenkenobi
Fixes
- 2228 invokeSuspend edge case fix by @kanderson250
- 2258 Rename and reenable aws sqs modules by @kanderson250
- 2245 Update JFR service to run as a daemon by @kanderson250
IAST
- CSEC Version bump to 1.6.1 2252
- Changelog: https://github.com/newrelic/csec-java-agent/releases/tag/1.6.1
New Contributors
- @hmstepanek made their first contribution in #2179
Full Changelog: v8.18.0...v8.19.0
Version 8.18.0
New features and improvements
- 2172 Add scala3 source detection by @kanderson250
- 2185 Vertx: decrease amount of tokens created by @meiao
- 2199 Instrumentation module for Struts2 v6.7.0 by @jtduffy
- 2203 Kafka 3.9 support by @meiao
- 2204 Sqs distributed trace by @obenkenobi
- 2202 Kafka clients node metrics by @meiao
Fixes
- 2187 Fix edge case in JsonTemplateLayout with certain escaped sequences by @jtduffy
- 2191 Correct Apdex on transaction event if an error is present by @jtduffy
- 2192 Don't add null port to hostname attribute on JFR events by @jasonjkeller
- 2197 Fix memory issue with httpclient-5.0 instrumentation by @jasonjkeller
New Contributors
- @dhilpipre made their first contribution in #2178
Full Changelog: v8.17.0...v8.18.0
Version 8.17.0
New features and improvements
- Add support for jdbc-mariadb 3.0.0 till latest and r2dbc-mariadb 1.1.2 till latest - credit to @dhilpipre - clone of 2142 by @jtduffy in 2146
- Auto discover AWS account ID in the DynamoDB instrumentation by @meiao in 2148
- Auto discover AWS account ID in the Lambda sdk instrumentation by @meiao in 2167
- Support pekko-http on scala 3 for versions 1.0.0 till latest by @kanderson250 in 2163
- Allow JFR queue size and harvest interval to be configured via agent config by @jtduffy in 2168
New configs are:
jfr:
# The time interval, in seconds, of how often JFR data is sent to New Relic.
# The default is 10 seconds.
harvest_interval: 10
# The size of the queue used to store JFR events. Increasing this can reduce gaps in JFR reported data
# but can also cause resource issues in the agent or cause data to be dropped if backend pipeline
# limits are exceeded.
# See: https://docs.newrelic.com/docs/data-apis/ingest-apis/event-api/introduction-event-api/#limits
# https://docs.newrelic.com/docs/data-apis/ingest-apis/metric-api/metric-api-limits-restricted-attributes/
# Default is 250000
queue_size: 250000
- Add AWS Firehose SDK Instrumentation for versions 2.1.0 till latest by @obenkenobi in 2149
- Implement a new instrumentation module for r2dbc-mysql 1.1.3+ by @jbedell-newrelic in 2169
- Memory usage reduced for the r2dbc-mssql and m2dbc-mysql modules by @jbedell-newrelic in 2169
- Log when multiple, different, traceparent headers found on inbound request and only report
invalid parent header countsupportability metric when that scenario occurs by @jtduffy in 2154 - Expected NPE in noticeTracer no longer logs full stack trace by @jasonjkeller in 2143
Fixes
- Resolved a potential token timeout issue with the reactor-3.3.0 module by @jbedell-newrelic in 2169
IAST
- CSEC version bump to 1.6.0 2173
- Changelog: https://github.com/newrelic/csec-java-agent/releases/tag/1.6.0
Full Changelog: v8.16.0...v8.17.0
Version 8.16.0
New features and improvements
-
Obfuscate JVM properties by @kanderson250 in 2114
The Java agent will now obfuscate values passed to JVM properties. For example:-Dprop=12345will now be sent as-Dprop=obfuscated. The documentation has information on how to disable obfuscation and how to add exceptions. -
Cloud API by @meiao in 2081
The Cloud API allows cloud provider account information to be provided to the agent. This will allow the agent to populate thecloud.resource_idattribute in calls to select cloud services.
The API documentation has information on how to use it programmatically.
This information can also be provided using a configuration option. -
Support distributed tracing for Kafka Stream 3.7.x by @deleonenriqueta in 2095
-
Report if agent was installed via Azure site extension by @jtduffy in 2094
-
Lazy initialization of GUIDs on DefaultTracers by @yuzawa-san in 2088
-
Java HttpClient: Addition of status code to reported externals by @jtduffy in 2089
-
AWS Lambda: populate
cloud.resource_idusing data from Cloud API by @meiao in 2115 -
Kinesis Data Streams: populate
cloud.resource_idby @obenkenobi in 2112
Fixes
-
Use recordResponseTimeMetric instead of recordMetric by @Matzz in 2128
-
Use WeakReference HttpUrlConnection instrumentation by @obenkenobi in 2082
-
Fix a bug where Jetty 12 would not properly link distributed traces by @obenkenobi in 2140
-
Update to JFR daemon 1.13.0 by @jasonjkeller in 2129
This update changes the HTTP client used, which caused problems with some proxies.
IAST
- CSEC version bump to 1.5.1 2076
- Changelog: https://github.com/newrelic/csec-java-agent/releases/tag/1.5.1
New Contributors
- @yuzawa-san made their first contribution in #2088
- @Matzz made their first contribution in #2128
Full Changelog: v8.15.0...v8.16.0