Skip to content

Latest commit

 

History

History
1731 lines (1493 loc) · 99.3 KB

CHANGELOG.md

File metadata and controls

1731 lines (1493 loc) · 99.3 KB

Changelog

Unreleased

Version 1.19.2 (2022-11-02)

🛠️ Bug fixes

  • Bring back two public methods in opentelemetry-instrumentation-api-semconv that were mistakenly removed in v1.19.1 without a deprecation cycle (#7020)

Version 1.19.1 (2022-10-19)

🛠️ Bug fixes

  • Capture net.host.name on netty SERVER spans (#6892)

Version 1.19.0 (2022-10-13)

Migration notes

  • Deprecated HttpServerAttributesGetter.serverName(), and removed http.host and http.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 to restlet-1.1 (#6106)

🌟 New library instrumentation

📈 Enhancements

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

🛠️ Bug fixes

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

Version 1.18.0 (2022-09-14)

The opentelemetry-instrumentation-api artifact is declared stable in this release.

Migration notes

  • There were a few late-breaking changes in opentelemetry-instrumentation-api, prior to it being declared stable:
    • InstrumenterBuilder.addAttributesExtractors(AttributesExtractor...) was removed, use instead addAttributesExtractors(AttributesExtractor) or addAttributesExtractors(Iterable<AttributesExtractor>)
    • SpanLinksExtractor.extractFromRequest() was removed, use instead manual extraction
    • ErrorCauseExtractor.jdk() was renamed to ErrorCauseExtractor.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 the opentelemetry-javaagent-extension-api, use instead the Ordered interface from opentelemetry-sdk-extension-autoconfigure-spi (#6589)

📈 Enhancements

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

🛠️ Bug fixes

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

Version 1.17.0 (2022-08-18)

Migration notes

  • The @WithSpan and @SpanAttribute annotations has been moved from the io.opentelemetry:opentelemetry-extension-annotations artifact to the io.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 to InstrumenterBuilder.buildInstrumenter() (#6363)
  • io.opentelemetry.instrumentation.api.config.Config is deprecated (#6360)
  • HttpCommonAttributesGetter.requestContentLengthUncompressed() and responseContentLengthUncompressed are deprecated (#6383)
  • Ktor 2.0 instrumentation name is changed from io.opentelemetry.ktor-1.0 to io.opentelemetry.ktor-2.0 (#6452)
  • io.opentelemetry.opentelemetry-annotations-1.0 instrumentation name is changed to io.opentelemetry.opentelemetry-instrumentation-annotations-1.16 (#6450)
  • Liberty instrumentation names are changed from io.opentelemetry.liberty and io.opentelemetry.liberty-dispatcher to io.opentelemetry.liberty-20.0 and io.opentelemetry.liberty-dispatcher-20.0 (#6456)
  • The 2-arg variant of HttpCommonAttributesGeter#statusCode() is deprecated (#6466)
  • The opentelemetry-spring-starter artifact has been renamed to opentelemetry-spring-boot-starter, the opentelemetry-zipkin-exporter-starter artifact has been renamed to opentelemetry-zipkin-spring-boot-starter, and the opentelemetry-zipkin-exporter-starter artifact has been renamed to opentelemetry-zipkin-spring-boot-starter (#6453)
  • Update net semantic convention changes based on recent specification changes: net.peer.ip renamed to net.sock.peer.addr, net.host.ip renamed to net.sock.host.addr, net.peer.name renamed to net.sock.peer.name for socket-level instrumentation, and NetClientAttributesGetter.peerIp(), NetServerAttributesGetter.peerIp(), and NetServerAttributesGetter.peerPort() are deprecated (#6268)

📈 Enhancements

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

🛠️ Bug fixes

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

Version 1.16.0 (2022-07-19)

Migration notes

  • 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 to opentelemetry-instrumentation-annotation-support
  • The opentelemetry-annotations instrumentation suppression key has been renamed to opentelemetry-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

🌟 New javaagent instrumentation

  • C3P0 connection pool metrics (#6174)
  • JVM buffer pool metrics (#6177)
  • Kafka client metrics (#6138)
  • dropwizard-metrics to OpenTelemetry metrics bridge (#6259)

🌟 New library instrumentation

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

📈 Enhancements

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

🛠️ Bug fixes

  • Fix liberty net.peer.port (#6274)

Version 1.15.0 (2022-06-16)

Migration notes

  • The opentelemetry-jboss-logmanager-1.1 artifact has been renamed to opentelemetry-jboss-logmanager-appender-1.1
  • The play instrumentation name has changed from play to play-mvc (#6106)
  • The vertx-http-client instrumentation name has changed from vertx-client to vertx-http-client (#6106)
  • The metric process.runtime.java.memory.max has been renamed to process.runtime.java.memory.limit (#6161)

🌟 New javaagent instrumentation

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

🌟 New library instrumentation

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

📈 Enhancements

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

🛠️ Bug fixes

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

🧰 Tooling

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

Version 1.14.0 (2022-05-17)

Migration notes

  • The opentelemetry-log4j-appender-2.16 artifact has been renamed to opentelemetry-log4j-appender-2.17
  • The opentelemetry-log4j-context-data-2.16-autoconfigure artifact has been renamed to opentelemetry-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 authors
  • ConfigPropertySource has been deprecated in favor of ConfigCustomizer
  • Several changes in the Instrumentation API
    • RequestMetrics has been renamed to OperationMetrics
    • RequestListener has been renamed to OperationListener
    • ErrorCauseExtractor#extractCause() has been renamed to extract()
    • ContextCustomizer and RequestListener start()/end() methods have been renamed to onStart()/onEnd()
  • The opentelemetry-javaagent-instrumentation-api artifact has been merged into the opentelemetry-javaagent-extension-api artifact

🌟 New javaagent instrumentation

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

🌟 New library instrumentation

  • Add metrics instrumentation for grpc (#5923)
  • Add HikariCP library instrumentation (#6023)

📈 Enhancements

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

🛠️ Bug fixes

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

Version 1.13.1 (2022-04-22)

🛠️ Bug fixes

  • Fix duplicate class error on Android build (#5882)
  • Fix spring-kafka single record instrumentation (#5904)

Version 1.13.0 (2022-04-19)

Migration notes

  • 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

🌟 New javaagent instrumentation

  • GraphQL (#5583)
  • JBoss Log Manager (#5737)
  • Apache HttpClient 5.x async client (#5697)

🌟 New library instrumentation

📈 Enhancements

  • 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 to connection-telemetry (#5834)
  • Update the http.route attribute even for not sampled server spans (#5844)

🛠️ Bug fixes

  • Fix possible deadlock (#5585)
  • Prevent possible deadlock in downstream distro (#5830)
  • Limit problems from kafka iterator instrumentation thread context leak (#5826)

🧰 Tooling

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

Version 1.12.1 (2022-03-17)

🛠️ Bug fixes

  • Elasticsearch rest client low cardinality span name (#5584)
  • Fix possible deadlock (#5585)

Version 1.12.0 (2022-03-12)

🌟 New javaagent instrumentation

  • Add Azure SDK instrumentation (#5467)

📈 Enhancements

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

🛠️ Bug fixes

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

🧰 Tooling

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

Version 1.11.1 (2022-02-21)

🛠️ Bug fixes

  • Regression in loading the prometheus exporter (#5408)

Version 1.11.0 (2022-02-11)

Migration notes

  • The previous release (1.10.0) deprecated the entire io.opentelemetry.instrumentation.api.tracer package in the instrumentation-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 artifacts opentelemetry-aws-lambda-core-1.0 and opentelemetry-aws-lambda-events-2.2.

🌟 New javaagent instrumentation

  • Spring RMI instrumentation (#5033)

🌟 New library instrumentation

  • Ratpack httpclient (#4787)

📈 Enhancements

  • 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 in HttpServerMetrics (#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)

🛠️ Bug fixes

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

🧰 Tooling

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

Version 1.10.1 (2022-01-27)

🛠️ Bug fixes

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

Version 1.10.0 (2022-01-15)

Migration notes

  • The opentelemetry-log4j-2.13.2 artifact has been renamed to opentelemetry-context-data-2.16-autoconfigure
  • The opentelemetry-logback-1.0 artifact has been renamed to opentelemetry-logback-mdc-1.0
  • The opentelemetry-ratpack-1.4 artifact has been renamed to opentelemetry-ratpack-1.7 and only supports Ratpack 1.7 and above now

🌟 New javaagent instrumentation

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

🌟 New library instrumentation

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

📈 Enhancements

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

🛠️ Bug fixes

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

🧰 Tooling

  • Merge start and end time extractors (#4692)
  • Move cache implementations to internal package (#4746)
  • Reorganize shared servlet code (intro to #4317) (#4785)
  • Move AppServerBridge and MappingResolver to servlet-common:bootstrap (#4817)
  • Move ServletContextPath to servlet-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 for http.route) (#4852)
  • Move SpanKey to internal package (#4869)

Version 1.9.2 (2022-01-07)

🛠️ Bug fixes

  • Fix reactor-netty memory/connection leak (#4867)

Version 1.9.1 (2021-12-01)

🛠️ Bug fixes

  • Shade class references within AWS SDK service files (#4752)

Version 1.9.0 (2021-11-25)

📈 Enhancements

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

🛠️ Bug fixes

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

🧰 Tooling

  • Migrate to Spock 2 (#4458)
  • Rename newBuilder() to builder() (#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)

Version 1.8.0 - Bad Release

Due to an issue in the publishing infrastructure, a bad release was published as 1.8.0. Do not use it.

Version 1.7.0 (2021-10-19)

📈 Enhancements

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

🛠️ Bug fixes

  • Fix spring context reload issue (#4051)
  • Remove incorrect lettuce db.statement attribute (#4160)
  • Fix tomcat async spans (#4339)

🧰 Tooling

  • 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() to builder() (#4407)

Version 1.6.2 (2021-09-30)

🛠️ Bug fixes

  • The 1.6.1 patch release was not backwards compatible with javaagent extensions built against 1.6.0 (#4245)

Version 1.6.1 (2021-09-29)

🛠️ Bug fixes

  • Fix possible JDBC instrumentation deadlock (#4191)

Version 1.6.0 (2021-09-18)

🌟 New javaagent instrumentation

  • Add instrumentation for Quartz 2.0 (#4017)
  • Restlet instrumentation (#3946)

🌟 New library instrumentation

  • Add instrumentation for Quartz 2.0 (#4017)
  • Restlet instrumentation (#3946)

📈 Enhancements

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

🛠️ Bug fixes

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

🧰 Tooling

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

Version 1.5.3 (2021-08-31)

🛠️ Bug fixes

  • Fix parsing of unclean map values in Config (#4032)

Version 1.5.2 (2021-08-27)

🛠️ Bug fixes

  • Fix unbounded metrics cardinality, which in particular causes memory leak when not using any metrics exporter (#3972)

Version 1.5.1 (2021-08-25)

🛠️ Bug fixes

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

Version 1.5.0 (2021-08-22)

🌟 New library instrumentation

  • Library instrumentation for Apache HTTP Client 4.3 (#3623)
  • Library instrumentation for Ratpack server (#3749)

📈 Enhancements

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

🛠️ Bug fixes

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

🧰 Tooling

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

Version 1.4.0 (2021-07-20)

☢️ Behavioral changes

  • Updated all instrumentation names to io.opentelemetry.{libName}-{libVersion} (#3411)
  • Updated RabbitMQ to follow semantic conventions (#3425)

🌟 New javaagent instrumentation

  • Jetty 9 HTTP client instrumentation (#3079)

🌟 New library instrumentation

  • Jetty 9 HTTP client instrumentation (#3079)
  • Jdbc instrumentation (#3367)

📈 Enhancements

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

🛠️ Bug fixes

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

🧰 Tooling

  • 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 to opentelemetry-javaagent-instrumentation-api (#3513)

Version 1.3.1 (2021-06-23)

🛠️ Bug fixes

  • Fix incorrect dependency in published BOM (#3376)
  • Fix UnsupportedOperationException with reactor-rabbitmq (#3381)
  • Fix Spring JMS not being instrumented (#3359)

Version 1.3.0 (2021-06-17)

☢️ Behavioral changes

  • Update agent logger prefix (#3007)
  • Remove khttp instrumentation (#3087)
  • Enable akka actor instrumentation by default (#3173)

🌟 New javaagent instrumentation

  • Spring Integration javaagent instrumentation (#3295)

🌟 New library instrumentation

  • Spring Integration library instrumentation (#3120)

📈 Enhancements

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

🛠️ Bug fixes

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

🧰 Tooling

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

Version 1.2.0 (2021-05-14)

☢️ Behavioral changes

  • 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 of SERVER span name (#2824)
  • RequestDispatcher forward() and include() internal spans removed (#2816)
  • Raised gRPC min version supported to 1.6 in order to use new gRPC context bridge API (#2948)

🌟 New javaagent instrumentation

🌟 New library instrumentation

📈 Enhancements

  • 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 and code.function captured on JAX-RS internal spans (#2805)
  • Context propagated to reactor-netty callbacks (#2850)

🛠️ Bug fixes

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

🧰 Tooling

  • 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 new javaagent-extension-api module was introduced, containing all the necessary instrumentation classes and interfaces;
    • InstrumentationModule and TypeInstrumentation were moved to the io.opentelemetry.javaagent.extension.instrumentation package;
    • AgentElementMatchers, ClassLoaderMatcher and NameMatchers were moved to the io.opentelemetry.javaagent.extension.matcher package;
    • A new SPI AgentExtension was introduced: it replaces ByteBuddyAgentCustomizer;
    • InstrumentationModule#getOrder() was renamed to order();
    • InstrumentationModule#additionalHelperClassNames() has been removed; use isHelperClass(String) instead if you use the muzzle compile plugin. If you're not using muzzle, you can override getMuzzleHelperClassNames() directly instead;
    • InstrumentationModule#getAllHelperClassNames() has been removed; you can call getMuzzleHelperClassNames() to retrieve all helper class names instead.

Version 1.1.0 (2021-04-14)

☢️ Behavioral changes

  • Update servlet attribute names for log injection, from traceId and spanId to trace_id and span_id (#2593)
  • Renamed runtime.jvm.gc.collection metric to runtime.jvm.gc.time (#2616)

🌟 New javaagent instrumentation

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

🌟 New library instrumentation

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

📈 Improvements

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

🛠️ Bug fixes

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

🧰 Tooling

  • Make muzzle reference creation package(s) configurable (#2615)
  • Instrumentations now can skip defining context store manually (#2775)
  • New Instrumenter API (#2596)