- Fix potential startup failure (#7567)
- Add resource injection for getResourceAsStream (#7476)
- GRPC: Adds peer socket address when the client call is ready (#7451)
- Make OpenTelemetryAppender.Builder public (#7521)
- Disable internal TaskScheduler spans in Spring Kafka instrumentation (#7553)
- Support Spring Web MVC in library instrumentation (#7552)
- Instrument JMS 3.0 (Jakarta) (#7418)
- Shade
application.io.opentelemetry
in agent extension class loader (#7519) - Use new reactor contextWrite when available (from reactor 3.4.0) (#7538)
- Make config file available in early agent initialization phase (#7550)
- Support Spring JMS 6.0 (#7438)
- Preserve original exception in jetty http client wrappers (#7455)
- Propagate original exception through kafka wrapper (#7452)
- Fix class file load error when using spring-guice together with spring-web instrumentation (#7447)
- Fix NPE in servlet AsyncListener on OpenLiberty (#7498)
- Muzzle logs should be logged using the io.opentelemetry.* logger name (#7446)
- Remove deprecated HTTP semconv code (#7259)
- Rocketmq 5: set context for async callback (#7238)
- HTTP semconv: filter out default peer/host ports (#7258)
- Allow multiple YAML configuration files for JMX rules (#7284)
- OpenTelemetryDriver better support for native images (#7089)
- Support Spring Kafka 3 (#7271)
- Add instrumentation for opentelemetry-extension-kotlin (#7341)
- Populate
messaging.kafka.message.offset
in all kafka instrumentations (#7374) - More flexible cgroupv2 container id parsing (and podman support) (#7361)
- Instrument spring-web 6 & spring-webmvc 6 (#7366)
- Change log4j MapMessage attribute names (#7397)
- Don't call Thread#setContextClassLoader() (#7391)
- Webflux instrumentation doesn't capture
http.status_code
in some cases (#7251) - Clean WeakConcurrentMap from background thread (#6240)
- Update gwt rpc span from INTERNAL to SERVER (#7342)
- JMXMetricInsight should log nothing at INFO level (#7367)
- Fix NullPointerException when uri is null (#7387)
- Agent context storage wrapper should not override other wrappers (#7355)
- Do not install GC metrics when GarbageCollectionNotificationInfo is not available (#7405)
- Fix connection pool timeouts unit (#7404)
- Allow disabling muzzle checks for specific methods (#7289)
- Fix the boms (#7252)
- Update SDK version from 1.19.0 to 1.20.1 (#7223)
Instrumentation annotations module is declared stable in this release
(io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:1.20.0
).
- Renamed configuration property
otel.instrumentation.kafka.client-propagation.enabled
tootel.instrumentation.kafka.producer-propagation.enabled
and update code so that it only affects producer propagation (#6957) - Deprecated RocketMQ configuration property
otel.instrumentation.rocketmq-client.propagation
(#6958) - Deprecated
HttpServerAttributesExtractor#create(HttpServerAttributesGetter)
andHttpServerAttributesExtractor#builder(HttpServerAttributesGetter)
(#7020) - Renamed annotation instrumentation property name for the recent
opentelemetry-instrumentation-annotations
package fromotel.instrumentation.opentelemetry-annotations.exclude-methods
tootel.instrumentation.opentelemetry-instrumentation-annotations.exclude-methods
(#7196)
- Add meter version to runtime metrics (#6874)
- Auto-detect service name based on the jar name (#6817)
- okhttp: run our interceptor before other interceptors (#6997)
- Implement producer part of RocketMQ new client instrumentation (#6884)
- Ignore presto-jdbc shaded okhttp3 connection pool. (#7031)
- Record memory usage after garbage collection (#6963)
- Ignore trino shaded okhttp pool (#7114)
- Ignore Nashorn's class loader for performance reasons (#7116)
- Add gRPC library configuration for additionalServerExtractors (#7155)
- Implement consumer part of rocketmq new client instrumentation (#7019)
- Support cgroup v2 (#7167)
- Replace
runtime.jvm.gc.time
/runtime.jvm.gc.count
metrics withprocess.runtime.jvm.gc.duration
histogram (#6964)
- End reactor-netty HTTP client span properly on
Mono#timeout()
(#6891) - Capture net.host.name for netty (#6892)
- 6929 - fixing unit for runtime.jvm.gc.count (#6930)
- fix spring-webflux cast to PathPattern throws ClassCastException (#6872)
- Fix metric units (#6931)
- Fix RocketMQ ClassCastException on hook conflict (#6940)
- Handle UnsupportedClassVersionError in ServiceLoader on jdk9 (#7090)
- Avoid NPE when DirectWithAttributesChannel class is not available (#7133)
- Revert removing the mavenCentral repo from the muzzle check plugin (#6937)
- Make java.sql classes available to the agent and extensions (#7038)
- Bring back two public methods in
opentelemetry-instrumentation-api-semconv
that were mistakenly removed in v1.19.1 without a deprecation cycle (#7020)
- Capture
net.host.name
on netty SERVER spans (#6892)
- Deprecated
HttpServerAttributesGetter.serverName()
, and removedhttp.host
andhttp.server_name
attributes (#6709) - Removed previously deprecated configuration flags (see previous release notes for deprecations) (#6771)
- The restlet-1 instrumentation name has changed from
restlet-1.0
torestlet-1.1
(#6106)
- Netty 4.1 (#6820)
- Move in resource providers from core repo (#6574)
- Propagate client span context in doOnRequest (#6621)
- Update attribute key of rocketmq's message tag to use name from semantic conventions
(
messaging.rocketmq.message_tag
) (#6677) - Avoid muzzle matcher warning for the spring-boot-actuator-autoconfigure instrumentation (#6695)
- Add marker attribute for Log4j 2 (#6680)
- Add marker attribute for Logback (#6652)
- Add daemon attribute to process.runtime.jvm.threads.count (#6635)
- Link JMS receive span with the producer span (#6804)
- Link RabbitMQ receive span with the producer span (#6808)
- Run context customizers before span start instead of after (#6634)
- Strip sensitive data from the url (#6417)
- Extract
net.peer.{name,port}
on start for CLIENT spans (#6828)
- Fix scheduled job experimental attributes property (#6633)
- Fix AutoConfigurationCustomizer.addPropertiesSupplier not taking into account configuration-file (#6697)
- Fix Dubbo NPE and trace propagation issue (#6640)
- Fix directory separator in ProcessResource attributes (#6716)
- Fix instrumentation for tomcat 10.1.0 (#6766)
- Fix instrumentation name for jaxrs-2.0-annotations (#6770)
- Fix instrumentation for vert.x 4.3.4 (#6809)
- Fix Restlet v2
Message#getAttributes
calls (#6796) - Guard against null HttpContext (#6792)
The opentelemetry-instrumentation-api
artifact is declared stable in this release.
- There were a few late-breaking changes in
opentelemetry-instrumentation-api
, prior to it being declared stable:InstrumenterBuilder.addAttributesExtractors(AttributesExtractor...)
was removed, use insteadaddAttributesExtractors(AttributesExtractor)
oraddAttributesExtractors(Iterable<AttributesExtractor>)
SpanLinksExtractor.extractFromRequest()
was removed, use instead manual extractionErrorCauseExtractor.jdk()
was renamed toErrorCauseExtractor.getDefault()
ClassNames
utility was removed with no direct replacement
- The deprecated
io.opentelemetry.instrumentation.api.config.Config
and related classes have been removed (#6501) - Net attributes getters were updated to reflect latest specification changes (#6503)
- The deprecated
Ordered
interface was removed from theopentelemetry-javaagent-extension-api
, use instead theOrdered
interface fromopentelemetry-sdk-extension-autoconfigure-spi
(#6589)
- Add Spring Boot service name guesser / ResourceProvider (#6516)
- Move micrometer shim library instrumentation back (#6538)
- Add grpc status code to metrics attrs (#6556)
- Add mongo sanitization configuration (#6541)
- Add kafka client metrics to the javaagent instrumentation (#6533)
- Add experimental span attribute job.system (#6586)
- Add code attributes for Logback (#6591)
- Reactor instrumentation: do not make root context current (#6593)
- Fix default-enabled config (#6491)
- Fix new jdbc javaagent config (#6492)
- Fix jaxrs async instrumentation race (#6523)
- Fix spring webmvc instrumentation name (#6557)
- Fix spring boot
@WithSpan
handling (#6619)
- The
@WithSpan
and@SpanAttribute
annotations has been moved from theio.opentelemetry:opentelemetry-extension-annotations
artifact to theio.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations
in order to live and evolve alongside the instrumentation itself. The instrumentation will continue to support the old artifact for backwards compatibility, but new annotation-based features will only be built out and supported with the new annotation artifact. InstrumenterBuilder.newInstrumenter()
is renamed toInstrumenterBuilder.buildInstrumenter()
(#6363)io.opentelemetry.instrumentation.api.config.Config
is deprecated (#6360)HttpCommonAttributesGetter.requestContentLengthUncompressed()
andresponseContentLengthUncompressed
are deprecated (#6383)- Ktor 2.0 instrumentation name is changed from
io.opentelemetry.ktor-1.0
toio.opentelemetry.ktor-2.0
(#6452) io.opentelemetry.opentelemetry-annotations-1.0
instrumentation name is changed toio.opentelemetry.opentelemetry-instrumentation-annotations-1.16
(#6450)- Liberty instrumentation names are changed from
io.opentelemetry.liberty
andio.opentelemetry.liberty-dispatcher
toio.opentelemetry.liberty-20.0
andio.opentelemetry.liberty-dispatcher-20.0
(#6456) - The 2-arg variant of HttpCommonAttributesGeter#statusCode() is deprecated (#6466)
- The
opentelemetry-spring-starter
artifact has been renamed toopentelemetry-spring-boot-starter
, theopentelemetry-zipkin-exporter-starter
artifact has been renamed toopentelemetry-zipkin-spring-boot-starter
, and theopentelemetry-zipkin-exporter-starter
artifact has been renamed toopentelemetry-zipkin-spring-boot-starter
(#6453) - Update net semantic convention changes based on recent specification changes:
net.peer.ip
renamed tonet.sock.peer.addr
,net.host.ip
renamed tonet.sock.host.addr
,net.peer.name
renamed tonet.sock.peer.name
for socket-level instrumentation, andNetClientAttributesGetter.peerIp()
,NetServerAttributesGetter.peerIp()
, andNetServerAttributesGetter.peerPort()
are deprecated (#6268)
- Move buffer pool metrics out of experimental (#6370)
- Add code attributes to several instrumentations (#6365)
- Add http.client|server.request|response.size metrics (#6376)
- Add Kafka instrumentation to the Spring Boot starter (#6371)
- Extract HTTP request & response content length from headers (#6415)
- Support DataDirect and Tibco Jdbc URLs (#6420)
- Set http.route in spring-autoconfigure webmvc instrumentation (#6414)
- Grizzly: capture all matching request & response headers (#6463)
- Capture messaging header value as span attribute (#6454)
- Add JDBC-specific sanitizer property (#6472)
- Fix duplicate spans for Quarkus gRPC server (#6356)
- Update Kafka library instrumentation to support version 3.0.0 and later (#6457)
- Mongodb: avoid duplicate tracing (#6465)
- Fix netty instrumentation NoSuchElementException (#6469)
- Config has been replaced by ConfigProperties in Javaagent extensions SPIs
- The deprecated TimeExtractor has been removed
- The
opentelemetry-instrumentation-api-annotation-support
artifact has been renamed toopentelemetry-instrumentation-annotation-support
- The
opentelemetry-annotations
instrumentation suppression key has been renamed toopentelemetry-extension-annotations
- The 'otel.javaagent.experimental.use-noop-api' flag has been removed, as this capability is now
available via the
otel.experimental.sdk.enabled
flag
- C3P0 connection pool metrics (#6174)
- JVM buffer pool metrics (#6177)
- Kafka client metrics (#6138)
- dropwizard-metrics to OpenTelemetry metrics bridge (#6259)
- C3P0 connection pool metrics (#6174)
- JVM buffer pool metrics (#6177)
- Kafka client metrics (#6138)
- Add metrics & micrometer support to spring-boot-autoconfigure (#6270)
- Spring Kafka library instrumentation (#6283)
- Update GraphQL instrumentation to match spec (#6179)
- Make rpc.grpc.status_code required (#6184)
- Always pass Context when recording HttpServerMetrics (#6223)
- Capture enduser.id in servlet instrumentation (#6225)
- Support metric view configuration file in the Javaagent (#6228)
- Aws sdk2 sqs context propagation (#6199)
- More Spring JMS support (#6308)
- Hikaricp: Avoid registering duplicate metrics (#6325)
- Fix liberty net.peer.port (#6274)
- The
opentelemetry-jboss-logmanager-1.1
artifact has been renamed toopentelemetry-jboss-logmanager-appender-1.1
- The play instrumentation name has changed from
play
toplay-mvc
(#6106) - The vertx-http-client instrumentation name has changed from
vertx-client
tovertx-http-client
(#6106) - The metric
process.runtime.java.memory.max
has been renamed toprocess.runtime.java.memory.limit
(#6161)
- JVM classes metrics (#6069)
- JVM threads metrics (#6070)
- Vibur DBCP connection pool metrics (#6092)
- tomcat-jdbc connection pool metrics (#6102)
- JVM cpu metrics (#6107)
- Oracle UCP connection pool metrics (#6099)
- Apache DBCP2 datasource metrics (#6175)
- Add instrumentation for JAX-RS 3.0 (#6136)
- JVM classes metrics (#6069)
- JVM threads metrics (#6070)
- Vibur DBCP connection pool metrics (#6092)
- tomcat-jdbc connection pool metrics (#6102)
- JVM cpu metrics (#6107)
- Oracle UCP connection pool metrics (#6099)
- Apache DBCP2 datasource metrics (#6175)
- Enable grizzly instrumentation by default (#6049)
- Instrumentation for redisson 3.17.2+ (#6096)
- Instrumentation for jboss-logmanager getMdcCopy() (#6112)
- Allow specifying a comma separated list of extensions (#6137)
- Fix redisson ClassCastException (#6054)
- Fix debug logging (#6085)
- HttpURLConnection instrumentation can capture wrong http.method (#6053)
- fix bug: get return type in a wrong way for method instrumentation (#6118)
- Show correct runnable name in spring scheduling actuator (#6140)
- Fix ClassCastException in JDBC instrumentation (#6088)
- Remove TimeExtractor and use internal API for setting start/end timestamps (#6051)
- Change SpanStatusExtractor to use a builder that can set status description (#6035)
- Make gRPC metadata available to AttributeExtractors (#6125)
- The
opentelemetry-log4j-appender-2.16
artifact has been renamed toopentelemetry-log4j-appender-2.17
- The
opentelemetry-log4j-context-data-2.16-autoconfigure
artifact has been renamed toopentelemetry-log4j-context-data-2.17-autoconfigure
- Micrometer library instrumentation has been removed as it has been moved to the core repo and
is now published under
io.opentelemetry:opentelemetry-micrometer1-shim
- The rxjava javaagent instrumentation names for suppression have changed to
rxjava
AgentListener#beforeAgent()
has been deprecated, as it is not expect to be needed by extensions authorsConfigPropertySource
has been deprecated in favor ofConfigCustomizer
- Several changes in the Instrumentation API
RequestMetrics
has been renamed toOperationMetrics
RequestListener
has been renamed toOperationListener
ErrorCauseExtractor#extractCause()
has been renamed toextract()
ContextCustomizer
andRequestListener
start()
/end()
methods have been renamed toonStart()
/onEnd()
- The
opentelemetry-javaagent-instrumentation-api
artifact has been merged into theopentelemetry-javaagent-extension-api
artifact
- Add jboss-logmanager mdc support (#5842)
- Spring-kafka single record instrumentation (#5904)
- Add metrics instrumentation for grpc (#5923)
- Add vertx-kafka-client instrumentation (#5973, #5982)
- Hide the GC runtime metrics behind an experimental config flag (#5990)
- Add HikariCP connection pool metrics (#6003)
- Enable span suppression by SpanKey by default (#5779)
- record exception in dubbo high version (#5892)
- Introduce LocalRootSpan (replacing ServerSpan) (#5896)
- Add javaagent<->application context bridge for HttpRouteHolder (#5838)
- Exclude spring temporary type matching class loader (#5912)
- Load agent classes child first (#5950)
- Avoid looking up annotation types during type matching (#5906)
- Add an SPI for customizing Config just before it's set (#6010)
- Fix duplicate class error on Android build (#5882)
- Avoid npe in netty 4.1 instrumentation (#5902)
- Fix logging exporter autoconfiguration issue (#5928)
- fix NPE for commons-httpclient v3.1 (#5949)
- Exclude duplicate project classes from inst/ (#5957)
- Ignore known problematic jdbc wrappers (#5967)
- Fix default enabled for runtime and oshi metrics (#5989)
- Mitigate against another kafka leak (#6021)
- Fix duplicate class error on Android build (#5882)
- Fix spring-kafka single record instrumentation (#5904)
- Micrometer instrumentation is now automatically applied to spring-boot-actuator apps
- Some configuration properties have been renamed:
otel.instrumentation.common.experimental.suppress-controller-spans
->otel.instrumentation.common.experimental.controller-telemetry.enabled
(important: note that the meaning is inverted)otel.instrumentation.common.experimental.suppress-view-spans
->otel.instrumentation.common.experimental.view-telemetry.enabled
(important: note that the meaning is inverted)otel.instrumentation.netty.always-create-connect-span
->otel.instrumentation.netty.connection-telemetry.enabled
otel.instrumentation.reactor-netty.always-create-connect-span
->otel.instrumentation.reactor-netty.connection-telemetry.enabled
- Runtime memory metric names were updated to reflect semantic conventions
- Micrometer library instrumentation has been deprecated as it has been moved to the core repo and
is now published under
io.opentelemetry:opentelemetry-micrometer1-shim
- Library instrumentation entry points have been renamed from
*Tracing
to*Telemetry
- Elasticsearch rest client low cardinality span names (#5584)
- Implement "Prometheus mode" for better micrometer->OTel->Prometheus support (#5537)
- Apply micrometer instrumentation to spring-boot-actuator apps (#5666)
- Sql sanitizer: handle double quoted table names (#5699)
- Spring Boot Starter service-name is constant (#5359)
- Update runtime memory metrics to reflect semantic conventions (#5718)
- change rpc type in apache dubbo (#5432)
- Rework context propagation to redisson async callback (#5748)
- Resolve end strategy after WithSpan method instead of before. (#5756)
- Allow scanning instrumented reactor publishers and only allow registe… (#5755)
- Faster type matching (#5724)
- Use UnsynchronizedAppenderBase as base class for our logback appender (#5818)
- Do not set the http.route attribute in JSF instrumentations (#5819)
- Use micrometer1-shim in micrometer javaagent instrumentation, deprecate library instrumentation (#5820)
- Rename netty
always-create-connect-span
property toconnection-telemetry
(#5834) - Update the http.route attribute even for not sampled server spans (#5844)
- Fix possible deadlock (#5585)
- Prevent possible deadlock in downstream distro (#5830)
- Limit problems from kafka iterator instrumentation thread context leak (#5826)
- Remove deprecated methods from instrumentation-api and library instrumentations (#5575)
- Split out RpcAttributesGetter (#5548)
- Run tests with jdk17 (#5598)
- Split out MessagingAttributesGetter (#5626)
- Run Gradle and compile code with Java 17 (#5623)
- Rename library entrypoints to Telemetry (#5624)
- Add InstrumenterBuilder.addRequestListener (#5655)
- Simplify HttpUrlConnection instrumentation (#5673)
- Convert all logging statements from slf4j to jul (#5674)
- Allows passing an OpenTelemetry instance to registerObservers() methods. (#5716)
- Make it possible to register multiple helper resources under the same… (#5703)
- Split out instrumentation-api-semconv (#5721)
- Move ClassNames & SpanNames to .util package (#5746)
- Library instrumentation should read its version from a file (#5692)
- Rename view and controller suppression config properties (#5747)
- Deprecate AttributesExtractor#set() method (#5749)
- Cleanup Config & ConfigBuilder API (#5733)
- Instrumenter instrumentation version and schema url (#5752)
- Add Azure SDK instrumentation (#5467)
- Use repository interface name in spring data operation name (#5352)
- Change the way Micrometer LongTaskTimer is bridged (#5338)
- Updates to http.server_name (#5369)
- Support forwarded proto field and x-forwarded-proto (#5357)
- Remove server span peer name (#5404)
- Add peer service support back to couchbase26 (#5451)
- Remove duplicative JAXRS HttpClient instrumentation (#5430)
- Add experimental thread attributes for logs (#5474)
- Add log4j 1.2 appender MDC capture (#5475)
- Capture logback formatted message (#5497)
- Add JBoss java.util.logging support (#5498)
- Disable the messaging receive span telemetry by default (#5500)
- Remove old experimental properties in CapturedHttpHeaders (#5524)
- Avoid conflicts in Micrometer description mapping (#5452)
- Fix another reverse lookup (#5393)
- Regression in loading the prometheus exporter (#5408)
- Fix muzzle failure on calls to primitive array clone (#5405)
- Fix regression in spring-scheduling span name (#5436)
- Fix android desugaring for HashMap.forEach (#5468)
- Fix duplicate class definition of ContextDataProvider (#5528)
- Do not propagate gRPC deadline when propagating OTel context via javaagent (#5543)
- Split out CodeAttributesGetter (#5342)
- Add prometheus smoke test (#5417)
- Set custom gRPC client/server span name extractor (#5244)
- Split out DbClientAttributesGetter and SqlClientAttributesGetter (#5354)
- Add builders for setting optional attributes on HTTP extractors (#5347)
- Write http server tests in java (#5501)
- Deprecate CapturedHttpHeaders and replace it with builder methods (#5533)
- Update to Groovy 4 (#5532)
- Regression in loading the prometheus exporter (#5408)
- The previous release (1.10.0) deprecated the entire
io.opentelemetry.instrumentation.api.tracer
package in theinstrumentation-api
artifact, and the package was removed in this release. - The javaagent
-slim
artifact has been dropped in this release, because the exporters are much smaller now and there is no longer a significant size difference between the-slim
and default artifacts. - The
opentelemetry-aws-lambda-1.0
has been split into two artifactsopentelemetry-aws-lambda-core-1.0
andopentelemetry-aws-lambda-events-2.2
.
- Spring RMI instrumentation (#5033)
- Ratpack httpclient (#4787)
- Add
http.route
to server spans where route was already being captured for span name (#5086, #5240, #5242, #5241, #5239) - Use RPC attributes from spec for AWS SDK (#5166)
- SdkTracerProvider auto closed as separate Context Bean (#5124) (#5125)
- Support redisson 3.16.8+ (#5201)
- Support AWS SDK v1 request object subclasses. (#5231)
- Remove slim artifact (#5251)
- kotlinx-coroutines-reactor context propagation (#5196)
- Log a warning whenever GlobalOpenTelemetry.set() is called (#5264)
- Use
http.route
inHttpServerMetrics
(#5266) - Use VirtualField for associating netty listener with wrapper (#5282)
- Add code attributes to spring-scheduling spans (#5306)
- Propagate context into redisson async callback (#5313)
- Add max measurements to Micrometer Timer & DistributionSummary (#5303)
- Make it possible to configure base time unit used by the Micrometer bridge (#5304)
- Make HttpClientMetrics report low cardinality metrics (#5319)
- Implement NamingConvention support in Micrometer bridge (#5328)
- Add net.peer.name and net.peer.port attributes for grpc client span (#5324)
- Split lambda instrumentation into core and events (#5326)
- Add jaeger remote sampler to agent (#5346)
- Weak cache optimization (#5344)
- Several micrometer instrumentation fixes (#5118)
- Fix serialisation exception on default lambda events (#4724)
- NoSuchMethodError when using agent and modules (JPMS) (#5169)
- Spring boot cloud gateway, context propagation broken (#5188)
- Akka http server span names are always akka.request #3478 (#5150)
- Recover from duplicate class definition errors (#5185)
- Fix serialization for quartz JobExecutionContext (#5263)
- End jedis span when operation actually ends (#5256)
- Enable oshi ProcessMetrics in javaagent (#5281)
- Add missing return type matchers to the executor instrumentation (#5294)
- Fix triggering of DNS lookup (#5297)
- Avoid potential for reverse name lookup (#5305)
- Fix WeakConcurrentMap memory leak (#5316)
- AWS Lambda instrumentation requires jackson and lambda-events on the classpath (#5326)
- Convert InstrumentationTestRunner from interface to abstract class (#5112)
- Parameterize VirtualField field type (#5165)
- Remove old TraceUtils and use InstrumentationTestRunner#run*Span() (almost) everywhere (#5160)
- Remove deprecated tracer API (#5175)
- Remove HttpServerTest#extraAttributes() method (#5176)
- Rename ServerSpanNaming to HttpRouteHolder (#5211)
- Don't run testLatestDeps on alpha/beta/rc versions (#5258)
- Refactor HTTP attributes extractors to use composition over inheritance (#5030, #5194 #5267)
- Refactor AttributesExtractor so that it extracts route from Context (#5288)
- Publish gradle-plugins to Maven Central (#5333)
- Regression in project reactor context propagation instrumentation (#5188)
- Recover from duplicate class definition errors (#5185)
- StringIndexOutOfBoundsException in AWS SDK v1 when using request object subclass (#5231)
- Update to OTel SDK 1.10.1 (#5218)
- The
opentelemetry-log4j-2.13.2
artifact has been renamed toopentelemetry-context-data-2.16-autoconfigure
- The
opentelemetry-logback-1.0
artifact has been renamed toopentelemetry-logback-mdc-1.0
- The
opentelemetry-ratpack-1.4
artifact has been renamed toopentelemetry-ratpack-1.7
and only supports Ratpack 1.7 and above now
- Logback appender instrumentation to send logs through the OpenTelemetry logging pipeline (#4939, #4968)
- Log4j 2.x appender instrumentation to send logs through the OpenTelemetry logging pipeline (#4944, #4959, #4966)
- Log4j 1.2 appender instrumentation to send logs through the OpenTelemetry logging pipeline (#4943)
- java.util.logging instrumentation to send logs through the OpenTelemetry logging pipeline (#4941)
- Micrometer instrumentation to send micrometer metrics through the OpenTelemetry metrics pipeline (#4919, #5001, #5017)
- Logback appender to send logs through the OpenTelemetry logging pipeline (#4984)
- Log4j 2.x appender to send logs through the OpenTelemetry logging pipeline (#4375, #4907)
- Ktor instrumentation (#4983)
- Micrometer instrumentation to send micrometer metrics through the OpenTelemetry metrics pipeline (#5063)
- Renamed Apache Dubbo and Log4j MDC library artifacts (#4779)
- Added http4 handler to apache-camel instrumentation (#4650)
- Capture servlet request parameters (#4703)
- Propagate Context instead of SpanContext in Kafka instrumentation (#4806)
- Instrument ContextPropagationOperator to bridge lib/agent calls (#4786)
- Add shouldStart() call to Armeria server instrumentation (#4843)
- Capture RPC metrics (#4838)
- Update log4j library base version (#4914)
- Rename log4j-thread-context modules to log4j-context-data (#4957)
- Support latest oshi version (#4993)
- Support latest RxJava version (#4954)
- Create producer span from spring integration instrumentation (#4932)
- Capture servlet request parameters at the end of the request (#5019)
- Don't extract deprecated cassandra keyspace attribute (#5041)
- Add OTLP logs exporters (#5060, #5088)
- End redisson span when the operation actually ends (#5073)
- Don't capture high-cardinality http.target as metrics attribute (#5081)
- Remove virtual field interfaces from reflection results (#4722)
- Work around jvm crash on early 1.8 (#4345)
- Fix http.url handing in vert.x 3 http client (#4739)
- Capture missing RMI spans (#4764)
- Avoid crashing on early 1.8 openjdk vms (#4789)
- Fix Quarkus correlation (#4883)
- Fix RabbitMQ instrumentation consumption on empty headers (#4903)
- Fix NPE in Apache HttpClient 4.0 instrumentation (#4913)
- Fix NPE in RocketMQ instrumentation (#4901)
- Fix time units in HTTP & RPC metrics (#4963)
- Fix some gauge types (#4962)
- Fix context propagation for undertow async dispatch (#4950)
- Fix redefinition failure on openj9 (#5009)
- Fix NPE in rmi server instrumentation (#5042)
- Merge start and end time extractors (#4692)
- Move cache implementations to internal package (#4746)
- Reorganize shared servlet code (intro to #4317) (#4785)
- Move
AppServerBridge
andMappingResolver
toservlet-common:bootstrap
(#4817) - Move
ServletContextPath
toservlet-common:bootstrap
(#4824) - Expose AutoConfiguredOpenTelemetrySdk to AgentListener (#4831)
- Deprecate the Tracer API (#4868)
- Remove ConfigPropertiesAdapter as it's no longer needed (#4888)
- Refactor
ServerSpanNaming
(in preparation forhttp.route
) (#4852) - Move SpanKey to internal package (#4869)
- Fix reactor-netty memory/connection leak (#4867)
- Shade class references within AWS SDK service files (#4752)
- Don't report 400 level as error for SERVER spans (#4403)
- Netty instrumentation now captures
http.scheme
(#4446, #4576) - Stabilize HTTP headers capturing configuration property names (#4459)
- Add metrics to remaining http instrumentation (#4541)
- Remove hibernate session spans (#4538)
- Support Jedis 4 (#4555)
- Trace DNS resolution in Netty 4.1 and reactor-netty (#4587, #4627)
- Update garbage collector instruments to be async counters (#4600)
- Update HTTP metrics view to match the specification (#4556)
- Improve Spring Integration interceptor ordering (#4602)
- Support Restlet 2.0 (#4535)
- Improved capture of couchbase queries (#4615)
- Trace SSL handshakes in netty 4.0 and 4.1 (#4635, #4604)
- Capture exception on finatra controller spans (#4669)
- Capture exception on async servlet spans (#4677)
- Automatic AWS library instrumentor (#4607)
- Support spring boot 2.6.0 (#4687)
- Preserve caught netty exception in the context instead of calling end() (#4413)
- Extract net attributes both on start and on end in netty HTTP client (#4420)
- Capture metric dimensions from end attributes also (#4430)
- Avoid logging servlet3 muzzle failure when running on servlet2 (#4474)
- Fix JettyHttpClient9TracingInterceptor NullPointerException (#4527)
- Fix context propagation in tomcat thread pool (#4521)
- Add missing java.util.logging.Logger methods to PatchLogger (#4540)
- Fix ClassCircularityError when running with security manager (#4557)
- Fix sun.misc.Unsafe generation on Java 17 (#4558)
- Fix IndexOutOfBounds in apache http clients (#4575)
- Fix RMI instrumentation on Java 17 (#4577)
- Fix Spring Integration instrumentation name (#4601)
- Capture instrumentation version provided by application tracer correctly when using agent (#4630)
- Ensure that netty 4.0 instrumentation is not applied to 4.1 (#4626)
- Fix muzzle problems happening when netty without SSL is used (#4631)
- Fix memory leak when using ktor-client-java (#4637)
- Fix quartz instrumentation name (#4657)
- Fix Spring Integration context leak (#4673)
- Fix exemplars (#4678)
- Fix and enforce Android support (#4671, #4667 #4505)
- Migrate to Spock 2 (#4458)
- Rename
newBuilder()
tobuilder()
(#4475) - Sync gradle-plugins version with main project (#4248)
- Muzzle match only once in each class loader (#4543)
- Inject helper resources only once (#4573)
- Improve muzzle check for constructors (#4591)
- Add version to the InstrumenterBuilder and Instrumenter (#4611)
- Add a ClassAndMethod class to Instrumentation API (#4619)
- Implement a dedicated reactor-netty 1.0 instrumentation (#4662)
- Remove gRPC dependency for export (#4674)
- Start using Gradle Enterprise instance (#4663)
Due to an issue in the publishing infrastructure, a bad release was published as 1.8.0. Do not use it.
- Change the default javaagent artifact to have exporters, introduce new
-slim
artifact, and deprecate the-all
artifact (#4106) - Support jlinked images without jdk.unsupported module (#4154) (#4124)
- Added experimental option to suppress messaging receive spans (#4187) (#4204)
- Refine 404 handling in Restlet instrumentation (#4206)
- Remove dynamo db.name attribute (#4208)
- Remove capturing http.url in server instrumentation in favor of http.scheme, http.host and http.target (#4209)
- Intern db info to reduce memory consumption (#4263)
- Better JAX-RS async cancel handling (#4279)
- Extract HTTP request/response headers as span attributes (#4237, #4309, #4320, #4321, #4328, #4395)
- Support kafka streams 3 (#4236)
- AWS lambda - improvements in custom type handling in wrappers, SQS event wrapper added (#4254)
- Add code attributes to quartz spans (#4332)
- Collect more attributes from servlet instrumenter (#4356)
- Allow reactor instrumentation to pick up spans from reactor context (#4159)
- Hide virtual field accessor interface methods from reflection (#4390)
- Fix spring context reload issue (#4051)
- Remove incorrect lettuce db.statement attribute (#4160)
- Fix tomcat async spans (#4339)
- Add start/end time to RequestListener (#4155)
- Add context customizer hook to Instrumenter API (#4167)
- Transform lambda classes (#4182)
- Separate HTTP client/server AttributesExtractors (#4195)
- Introduce muzzle-specific interface to InstrumentationModule (#4207)
- Make it possible to use InstrumentationContext (now VirtualField) from library instrumentation (#4218)
- Add functionality to generate API changes (#4285)
- Split NetAttributesExtractor into NetClientAttributesExtractor and NetServerAttributesExtractor (#4287)
- Back VirtualField with a volatile field (#4355)
- Convert AttributesExtractor to interface (#4363)
- Rename some
*InstrumenterBuilder
classes to*InstrumenterFactory
(#4391) - rename
newBuilder()
tobuilder()
(#4407)
- The 1.6.1 patch release was not backwards compatible with javaagent extensions built against 1.6.0 (#4245)
- Fix possible JDBC instrumentation deadlock (#4191)
- Extract Jedis 3 net attributes from InetSocketAddress (#3912)
- Add option to suppress controller and view spans (#3865)
- Capture http.user_agent for AsyncHttpClient (#3930)
- Instrument spring-kafka batch message listeners (#3922)
- Use unsafe to inject classes to the bootstrap class loader (#4026)
- Some performance optimizations (#4004, #4006, #4008, #4013, #4014)
- Do not fallback to net attributes for http.client_ip (#4063)
- Start a CONSUMER span for Kafka poll() (#4041)
- Support otlp http exporter (#4068)
- Better grpc events (#4098)
- Bridge span keys defined in instrumentation-api (#3911)
- Hide generated fields and methods from reflection (#3948)
- Remove invalid message header (#3958)
- Fix memleak in the Netty ChannelPipeline instrumentation (#4053)
- Fix grpc instrumentation of callbacks (#4097)
- Bridge trace builder (#4090)
- Remove original handler when removelast in netty (#4123)
- Deprecate old extensions (#3825)
- Add request parameter to EndTimeExtractor (#3947)
- Make Config behave exactly as SDK DefaultConfigProperties (#4035)
- Fix extension shading (#4064)
- Add error parameter to EndTimeExtractor and AttributesExtractor#onEnd() (#3988)
- Allow adding multiple ContextStore fields to one key class (#4067, #4084, #4110)
- Fix parsing of unclean map values in Config (#4032)
- Fix unbounded metrics cardinality, which in particular causes memory leak when not using any metrics exporter (#3972)
- Fix broken Android level 21-25 support in OkHttp 3 library instrumentation (#3910)
- Fix maven central pom file for the opentelemetry-javaagent artifact (#3929)
- Fix maven central pom file for the opentelemetry-agent-for-testing artifact (#3935)
- Library instrumentation for Apache HTTP Client 4.3 (#3623)
- Library instrumentation for Ratpack server (#3749)
- Support Couchbase 3.2.0 (#3645)
- Handle port and IPv6 in forwarded headers (#3651)
- Set real Hibernate span name on method entry to help samplers (#3603)
- Reduce overhead of unsampled requests (#3681)
- Sanitize SQL in Apache Camel instrumentation (#3683, #3717)
- Add option to create span on new netty connection (#3707)
- Propagate context into jdk http client callback (#3719)
- Instrument Tomcat executor to support async servlets in new Tomcat 9.0.52 release (#3789)
- Add otlp-logging exporter (#3807)
- Add new option to support capturing nested client spans of different types (#3691)
- Propagate context to lettuce callbacks (#3839)
- Instrument ForkJoinTask.fork() (#3849)
- Implement a Call.Factory for okhttp 3.x+ library instrumentation (#3812)
- Record exception in Dubbo instrumentation (#3851)
- Propagate context to elasticsearch callbacks (#3858, #3861)
- Added Vertx http client 4 instrumentation (#3665)
- Make empty agent bridged context equal root context (#3869)
- Fix OkHttp 3 correlation when using callback under concurrency (#3669, #3676)
- Fix Netty span not captured on read timeout (#3613)
- Fix Netty connection failure handling when listener is lambda (#3569)
- Fix NullPointerException in Apache HttpAsyncClient instrumentation (#3692)
- Fix NullPointerException in Tomcat instrumentation (#3705)
- Fix Apache HttpClient telemetry when host and absolute URI are used (#3694)
- Fix JDK http client should propagate even when sampled out (#3736)
- Limit netty exception capture to netty spans (#3809)
- Fix jetty httpclient returning empty response when instrumented (#3831, #3833)
- Don't clobber user decorators in Armeria client instrumentation (#3873)
- Use valid Java identifiers for message keys (#3863)
- Fix ClassNotFoundException: HandlerMappingResourceNameFilter in some ear deployments (#3718)
- Improve extension sample documentation and add it to the README file (#3656)
- Extract muzzle check plugin (#3657)
- Move instrumentation specific classes out of javaagent-instrumentation-api (#3604)
- Publish muzzle plugins to Gradle Plugin Portal (#3720, #3763)
- Fill
http.client_ip
in ServerInstrumenter (#3756) - Fix printMuzzleReferences gradle task (#3808)
- Introduce stable property for external extensions (#3823)
- Run tests on j9 JVM during CI (#3764)
- Support looking up a ContextStore from outside of Advice (#3827)
- Deprecate MetricExporterFactory (#3862)
- Don't pass configuration to SDK autoconfigure through system props (#3866)
- Rename Config get*Property() methods to get*() (#3881)
- Updated all instrumentation names to
io.opentelemetry.{libName}-{libVersion}
(#3411) - Updated RabbitMQ to follow semantic conventions (#3425)
- Jetty 9 HTTP client instrumentation (#3079)
- Make @RabbitListener propagate context properly (#3339)
- Add peer.service to grpc javaagent instrumentation (#3357)
- Propagate context to cassandra4 callbacks (#3371)
- Update Armeria instrumentation to support new Armeria 1.9.0 release (#3407)
- Context propagation for ratpack Execution.fork() (#3416)
- Fix Kafka stream instrumentation to support Kafka 2.6 and above (#3438)
- Fix Dubbo trace/span cross-process propagation (#3442)
- Fix
peer.service
configuration mapping (#3378)
- Hide Config#create() method and use builder everywhere (#3338)
- Ignore task classes using IgnoredTypesConfigurer (#3380)
- Exclude duplicate classes from final jars (#3432, #3430)
- Port AsyncSpanEndStrategy to Instrumenter API (#3262)
- Rename
opentelemetry-javaagent-api
artifact toopentelemetry-javaagent-instrumentation-api
(#3513)
- Fix incorrect dependency in published BOM (#3376)
- Fix UnsupportedOperationException with reactor-rabbitmq (#3381)
- Fix Spring JMS not being instrumented (#3359)
- Update agent logger prefix (#3007)
- Remove khttp instrumentation (#3087)
- Enable akka actor instrumentation by default (#3173)
- Spring Integration javaagent instrumentation (#3295)
- Spring Integration library instrumentation (#3120)
- Support peer-service-mapping in OkHttp3 instrumentation (#3063)
- Low cardinality span names for Hibernate spans (#3106)
- Propagate context to armeria callbacks (#3108)
- Add attributes to netty connection failure span (#3115)
- Defer initialization of OpenTelemetry in spring-boot-autoconfigure (#3171)
- Support couchbase 3.1.6 (#3194)
- New experimental support for agent extensions (#2881, #3071, #3226, #3237)
- Propagate context to akka http callbacks (#3263)
- Remove Netty instrumented handler wrapper when original handler is removed (#3026)
- Fix memory leak when Netty handler is a lambda (#3059)
- Fix race condition on Undertow (#2992)
- Remove db.connection_string from redis instrumentation (#3094)
- Fix context propagation leak in Akka instrumentation (#3099)
- Fix webflux handler span sporadically not ending (#3150)
- End span on cancellation of subscription to reactive publishers (#3153)
- End span on cancellation of Guava future (#3175)
- Create Netty connection failure span only when first operation fails (#3228)
- Internal instrumentation should always be enabled by default (#3257)
- Fix context propagation leak in Akka HTTP instrumentation (#3264)
- Only include exporters in the
-all
jar (#3286) - Fix ForkJoinPool sometimes not instrumented (#3293)
- Migrate MuzzlePlugin to Java (#2996, #3017)
- Refactor TypeInstrumentation#transformers() method (#3019)
- Change a couple of Longs to Integers in Instrumenter API (#3043)
- Add peer.service to Instrumenter API (#3050)
- Add response type parameter to db attributes extractor (#3093)
- Add optimized Attributes implementation for Instrumenter (#3136)
- Rename ComponentInstaller to AgentListener and add #order() method (#3182)
- Update ByteBuddy (#3254)
- Introduce IgnoredTypesConfigurer SPI to enable defining per-module ignores (#3219)
- Extract agent shadow configuration to conventions script (#3256)
- Deprecate SpanExporterFactory in favor of ConfigurableSpanExporterProvider (#3299)
- Refactor span names class (#3281)
- Move http client/server testing dependencies to internal package (#3305)
- AWS lambda flush timeout raised to 10 seconds (#2855)
SERVER
span names improved for Spring MVC, Grails, Wicket, and Struts (#2814)SERVER
span names improved for Servlet filters (#2887)SERVER
span names improved for Resteasy (#2900)SERVER
span names improved for Jersey and CXF (#2919)- JAX-RS
@ApplicationPath
annotation captured as part ofSERVER
span name (#2824) - RequestDispatcher
forward()
andinclude()
internal spans removed (#2816) - Raised gRPC min version supported to 1.6 in order to use new gRPC context bridge API (#2948)
- RxJava 3 (#2794)
- RxJava 3 (#2794)
- Support sub-millisecond precision for start/end times on Java 9+ (#2600)
@WithSpan
async support added for methods returning async Reactor 3.x types (#2714)@WithSpan
async support added for methods returning Guava ListenableFuture (#2811)- Semantic attributes
code.namespace
andcode.function
captured on JAX-RS internal spans (#2805) - Context propagated to reactor-netty callbacks (#2850)
- gRPC context bridging issues (#2564, #2959)
- URL credentials of the form
https://username:[email protected]/
no longer captured (#2707) - Spring MVC instrumentation can cause Spring MVC to misroute requests under some conditions (#2815)
- RxJava2 NoSuchFieldError (#2836)
- Duplicate http client tracing headers (#2842)
- Netty 4.1 listeners could not be removed by application (#2851)
- NPE caused in gRPC ProtoReflectionService (#2876)
- Context leak when using Ratpack (#2910)
- Context leak when using Jetty (#2920)
- Servlet instrumentation overwrites setStatus that was set manually earlier (#2929)
- Spans not captured on interface default methods annotated with JAX-RS annotations (#2930)
- Documented how to write InstrumentationModule line by line (#2793)
- New instrumenter API used in JMS instrumentation (#2803)
- Instrumenter API improvements (#2860)
- Muzzle checks whether used fields are actually declared somewhere (#2870)
- Extracted javaagent-extension-api from tooling & spi
(#2879)
- You no longer have to depend on the
javaagent-tooling
module to implement custom instrumentations: a newjavaagent-extension-api
module was introduced, containing all the necessary instrumentation classes and interfaces; InstrumentationModule
andTypeInstrumentation
were moved to theio.opentelemetry.javaagent.extension.instrumentation
package;AgentElementMatchers
,ClassLoaderMatcher
andNameMatchers
were moved to theio.opentelemetry.javaagent.extension.matcher
package;- A new SPI
AgentExtension
was introduced: it replacesByteBuddyAgentCustomizer
; InstrumentationModule#getOrder()
was renamed toorder()
;InstrumentationModule#additionalHelperClassNames()
has been removed; useisHelperClass(String)
instead if you use the muzzle compile plugin. If you're not using muzzle, you can overridegetMuzzleHelperClassNames()
directly instead;InstrumentationModule#getAllHelperClassNames()
has been removed; you can callgetMuzzleHelperClassNames()
to retrieve all helper class names instead.
- You no longer have to depend on the
- Update servlet attribute names for log injection, from
traceId
andspanId
totrace_id
andspan_id
(#2593) - Renamed
runtime.jvm.gc.collection
metric toruntime.jvm.gc.time
(#2616)
- Elasticsearch 7 (#2514, #2528)
- Couchbase 3.1 (#2524)
- Grails (#2512)
- RocketMQ (#2263)
- Lettuce 6 (#2589)
- Servlet 5 (#2609)
- Vaadin web framework (#2619)
- GWT (#2652)
- Tapestry web framework (#2690)
@WithSpan
support for methods returning CompletableFuture (#2530)@WithSpan
support for methods returning async RxJava 2 types (#2530)
- Library instrumentation for AWS SDK v1 (#2525)
- Library instrumentation for Lettuce 5.1 (#2533)
- RocketMQ (#2263)
- Lettuce 6 (#2589)
- Spring Boot Autoconfigure support for
@WithSpan
methods returning CompletableFuture (#2618) - Spring Boot Autoconfigure support for
@WithSpan
methods returning async RxJava 2 types (#2530)
- Move attributes to span builder for use by samplers (#2587)
- Apache Camel - SNS propagation (#2562)
- Apache Camel - S3 to SQS propagation (#2583)
- Added
runtime.jvm.gc.count
metric (#2616) - Support reactor netty
HttpClient.from
construction (#2650) - Improve akka instrumentation (#2737)
- Record internal metric for SQL cache misses (#2747)
- End Netty 4.1 client and server spans when the response has completed, instead of when the response has started (#2641)
- Fix RestTemplateInterceptor so that it calls endExceptionally() on exception (#2516)
- Fix app failure under Eclipse OSGi (#2521)
- Fix undertow span ending too early (#2560)
- Fix context leak in AWS SDK 2.2 and RocketMQ instrumentations (#2637)
- Fix hang when a webflux http request is made inside of another webflux http request (e.g. auth filter) (#2646)
- Fix
@WithSpan
instrumentation breaking Java 6 classes (#2699) - Fix context not propagated over JMS when explicit destination used (#2702)
- Fix StackOverflowError if jdbc driver implementation of Connection getMetaData calls Statement execute (#2756)