Skip to content

Latest commit

 

History

History
3216 lines (2798 loc) · 189 KB

CHANGELOG.md

File metadata and controls

3216 lines (2798 loc) · 189 KB

Changelog

Unreleased

Version 1.33.1 (2024-03-20)

📈 Enhancements

  • Backport: Capture http.route for akka-http (#10777)
  • Update the OpenTelemetry SDK version to 1.36.0 (#10866)

Version 2.2.0 (2024-03-14)

Migration notes

  • Remove deprecated spring properties (#10454)

🌟 New javaagent instrumentation

  • Add cloud resource detectors in javaagent, but keep them disabled by default (#10754)
  • Add support for XXL-JOB (#10421)

📈 Enhancements

  • Don't fill network peer for cassandra SniEndPoint (#10573)
  • Spring boot starter: add service.version detection, improve service.name detection (#10457)
  • Always create a JMS consumer span (#10604)
  • Ability to disable the automatic Logback appender addition (#10629)
  • Allow excluding all methods of a class (#10753)
  • Preserve attribute type for logback key value pairs (#10781)
  • Add instrumentation for graphql 20 that does not use deprecated methods (#10779)
  • Capture http.route for pekko-http (#10799)
  • Normalize SQL IN(?, ?, ...) statements to "in(?)" to reduce cardinality of db.statement attribute (#10564)
  • Capture db.operation for CREATE/DROP/ALTER SQL statement (#10020)
  • Ignore AWS Lambda Runtime internal handlers (#10736)
  • Spring use SDK autoconfig (#10453)
  • Add manifest resource detector (#10621)
  • Add instrumentation for jetty 12 (#10575)
  • add host.id resource provider (#10627)
  • Spring starter includes annotation dependency (#10613)

🛠️ Bug fixes

  • Don't fail spring application startup if sdk is disabled (#10602)
  • Fix shading aws propagator (#10669)
  • Disable http and rpc metrics when advice can not be applied (#10671)
  • Fix native tests (#10685)
  • Fix tomcat instrumentation when user includes wrong servlet api (#10757)
  • Override xray trace header instead of appending (#10766)
  • Fix spring boot starter failing without logback (#10802)
  • Fix spring kafka context leak when batch listener is retried (#10741)
  • Fix the logic to get container.id resource attribute (#10737)
  • Configure kafka metrics reporter as class (#10855)
  • Disable context propagation when virtual thread is switched to the carrier thread (#10854)

Version 1.33.0 (2024-02-28)

Migration notes

  • The deprecated Jaeger exporter has been removed (#10524)

📈 Enhancements

  • Backport: Set route only on the SERVER span (#10580)
  • Update the OpenTelemetry SDK version to 1.35.0 (#10524)

Version 2.1.0 (2024-02-16)

Migration notes

  • Deprecated config properties have been removed in favor of the new names:
    • otel.instrumentation.kafka.client-propagation.enabled -> otel.instrumentation.kafka.producer-propagation.enabled
    • otel.instrumentation.netty.always-create-connect-span -> otel.instrumentation.netty.connection-telemetry.enabled
    • otel.instrumentation.http.capture-headers.client.request -> otel.instrumentation.http.client.capture-request-headers
    • otel.instrumentation.http.capture-headers.client.response -> otel.instrumentation.http.client.capture-response-headers
    • otel.instrumentation.http.capture-headers.server.request -> otel.instrumentation.http.server.capture-request-headers
    • otel.instrumentation.http.capture-headers.server.response -> otel.instrumentation.http.server.capture-response-headers
    • otel.instrumentation.http.client.emit-experimental-metrics -> otel.instrumentation.http.client.emit-experimental-telemetry
    • otel.instrumentation.http.server.emit-experimental-metrics -> otel.instrumentation.http.server.emit-experimental-telemetry (#10349)
  • The deprecated Jaeger exporter has been removed (#10241)
  • Actuator instrumentation has been disabled by default. You can enable using OTEL_INSTRUMENTATION_SPRING_BOOT_ACTUATOR_AUTOCONFIGURE_ENABLED=true or -Dotel.instrumentation.spring-boot-actuator-autoconfigure.enabled=true. (#10394)
  • Spring starter: removed support for the deprecated @io.opentelemetry.extension.annotations.WithSpan annotation. Use @io.opentelemetry.instrumentation.annotations.WithSpan annotation instead. (#10530)

🌟 New javaagent instrumentation

  • MyBatis framework instrumentation (#10258)
  • Finagle instrumentation (#10141)

🌟 New library instrumentation

  • Apache HttpClient 5 instrumentation (#10100)

📈 Enhancements

  • Spring starter: add distro version resource attribute (#10276)
  • Add context propagation for rector schedulers (#10311)
  • Spring starter: automatic addition of the OTel Logback appender (#10306)
  • Spring starter: add resource detectors (#10277)
  • Allow closing the observables for System and Process metrics gathered by OSHI (#10364)
  • Spring starter: Allow to configure the OTel Logback appender from system properties (#10355)
  • Spring starter: re-use sdk logic for configuring otlp exporters (#10292)
    • All available spring starter properties (including the new properties) can be found here
    • You can also use auto-completion in your IDE to see the available properties in application.properties or application.yml
  • Spring starter: add SystemOutLogRecordExporter (#10420)
  • Spring starter: use duration parser of config properties (#10512)
  • Spring starter: support otel.propagators (#10408)
  • Set route only on the SERVER span (#10290)
  • Convert Apache HttpClient 4.3 library instrumentation to "low-level" HTTP instrumentation (#10253)

🛠️ Bug fixes

  • Fix log replay of the Log4j 2 appender (#10243)
  • Fix Netty addListener instrumentation (#10254)
  • Fix Calling shutdown() multiple times warning in spring starter (#10222)
  • Correctly fix NPE in servlet AsyncListener (#10250)
  • add @ConditionalOnMissingBean to LoggingMetricExporter (#10283)
  • Make Netty Instrumentation HttpServerRequestTracingHandler propagate "Channel Inactive" event to downstream according to parent contract (#10303)
  • Improve rediscala instrumentation to address sporadic test failure (#10301)
  • Undertow: restore attached context only when it is for different trace (#10336)
  • Reactor kafka wrapper delegates to wrong method (#10333)
  • Spring starter: add missing LoggingMetricExporterAutoConfiguration to spring factories (#10282)
  • Spring starter: Fix MapConverter does not get initialized if some exporters are turned off (#10346)
  • Update azure-core-tracing-opentelemetry version and fix double-collection for synchronous HTTP requests (#10350)
  • Allow OSGI dynamic import for io.opentelemetry package when matching (#10385)
  • Use direct peer address in client.address when X-Forwarded-For is not present (#10370)
  • Netty: don't expose tracing handler in handlers map (#10410)
  • Wrap request to avoid modifying attributes of the original request (#10389)
  • Fix JarAnalyzer warnings on Payara (#10458)
  • Return wrapped connection from Statement.getConnection() (#10554)
  • Spring starter: Fix otel.propagators (#10559)
  • Populate server.address and server.port in Cassandra instrumentation (#10357)

🧰 Tooling

  • Allow multiple invokedynamic InstrumentationModules to share classloaders (#10015)

Version 1.32.1 (2024-02-02)

📈 Enhancements

  • Backport: update jackson packages to v2.16.1 (#10198, #10199)
  • Backport: implement forEach support for aws sqs tracing list (#10195)
  • Backport: Bridge metric advice in OpenTelemetry API 1.32 (#10026)
  • Update the OpenTelemetry SDK version to 1.34.1 (#10320)

🛠️ Bug fixes

  • Backport: Handle authority from request when HttpHost is null (#10204)
  • Backport: Null check for nullable response object in aws sdk 1.1 instrumentation (#10029)
  • Backport: Make Netty Instrumentation HttpServerRequestTracingHandler propagate "Channel Inactive" event to downstream according to parent contract (#10303)
  • Backport: Fix Netty addListener instrumentation (#10254)
  • Backport: Update azure-core-tracing-opentelemetry version and fix sync suppression (#10350)

Version 2.0.0 (2024-01-12)

The 2.0.0 release contains significant breaking changes that will most likely affect all users, please be sure to read the breaking changes below carefully.

Note: 1.32.x will be security patched for at least 6 months in case some of the changes below are too disruptive to adopt right away.

⚠️⚠️ Breaking changes ⚠️⚠️

  • The default OTLP protocol has been changed from grpc to http/protobuf in order to align with the specification. You can switch to the grpc protocol using OTEL_EXPORTER_OTLP_PROTOCOL=grpc or -Dotel.exporter.otlp.protocol=grpc.
  • Micrometer metric bridge has been disabled by default. You can enable it using OTEL_INSTRUMENTATION_MICROMETER_ENABLED=true or -Dotel.instrumentation.micrometer.enabled=true.
  • The OTLP logs exporter is now enabled by default. You can disable it using OTEL_LOGS_EXPORTER=none or -Dotel.logs.exporter=none.
  • Controller spans are now disabled by default. You can enable them using OTEL_INSTRUMENTATION_COMMON_EXPERIMENTAL_CONTROLLER_TELEMETRY_ENABLED=true or -Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true.
  • View spans are now disabled by default. You can enable them using OTEL_INSTRUMENTATION_COMMON_EXPERIMENTAL_VIEW_TELEMETRY_ENABLED=true or -Dotel.instrumentation.common.experimental.view-telemetry.enabled=true.
  • ⚠️⚠️ Stable HTTP semantic conventions are now emitted ⚠️⚠️
    • TOO MANY CHANGES TO LIST HERE, be sure to review the full list of changes.
  • Stable JVM semantic conventions are now emitted.
    • Memory metrics
      • process.runtime.jvm.memory.usage renamed to jvm.memory.used
      • process.runtime.jvm.memory.committed renamed to jvm.memory.committed
      • process.runtime.jvm.memory.limit renamed to jvm.memory.limit
      • process.runtime.jvm.memory.usage_after_last_gc renamed to jvm.memory.used_after_last_gc
      • process.runtime.jvm.memory.init renamed to jvm.memory.init (still experimental)
      • Metric attributes
        • type renamed to jvm.memory.type
        • pool renamed to jvm.memory.pool.name
    • Garbage collection metrics
      • process.runtime.jvm.gc.duration renamed to jvm.gc.duration
      • Metric attributes
        • name renamed to jvm.gc.name
        • action renamed to jvm.gc.action
    • Thread metrics
      • process.runtime.jvm.threads.count renamed to jvm.threads.count
      • Metric attributes
        • daemon renamed to jvm.thread.daemon
    • Classes metrics
      • process.runtime.jvm.classes.loaded renamed to jvm.classes.loaded
      • process.runtime.jvm.classes.unloaded renamed to jvm.classes.unloaded
      • process.runtime.jvm.classes.current_loaded renamed to jvm.classes.count
    • CPU metrics
      • process.runtime.jvm.cpu.utilization renamed to jvm.cpu.recent_utilization
      • process.runtime.jvm.system.cpu.load_1m renamed to jvm.system.cpu.load_1m (still experimental)
      • process.runtime.jvm.system.cpu.utilization renamed to jvm.system.cpu.utilization (still experimental)
    • Buffer metrics
      • process.runtime.jvm.buffer.limit renamed to jvm.buffer.memory.limit (still experimental)
      • process.runtime.jvm.buffer.count renamed to jvm.buffer.count (still experimental)
      • process.runtime.jvm.buffer.usage renamed to jvm.buffer.memory.usage (still experimental)
      • Metric attributes
        • pool renamed to jvm.buffer.pool.name

More migration notes

  • Lettuce CONNECT spans are now disabled by default. You can enable them using OTEL_INSTRUMENTATION_LETTUCE_CONNECTION_TELEMETRY_ENABLED=true or -Dotel.instrumentation.lettuce.connection-telemetry.enabled=true.
  • The configuration property otel.instrumentation.log4j-appender.experimental.capture-context-data-attributes has been renamed to otel.instrumentation.log4j-appender.experimental.capture-mdc-attributes.
  • MDC attribute prefixes (log4j.mdc. and logback.mdc.*) have been removed.
  • The artifact instrumentation-api-semconv has been renamed to instrumentation-api-incubator.
  • HTTP classes have been moved from instrumentation-api-incubator to instrumentation-api and as a result are now stable.

🌟 New javaagent instrumentation

  • Vert.x redis client (#9838)

📈 Enhancements

  • Reduce reactor stack trace depth (#9923)
  • Implement error.type in spring-webflux and reactor-netty instrumentations (#9967)
  • Bridge metric advice in OpenTelemetry API 1.32 (#10026)
  • Capture http.route for akka-http (#10039)
  • Rename telemetry.auto.version to telemetry.distro.version and add telemetry.distro.name (#9065)
  • Implement forEach support for aws sqs tracing list (#10062)
  • Add http client response attributes to aws sqs process spans (#10074)
  • Add support for OTEL_RESOURCE_ATTRIBUTES, OTEL_SERVICE_NAME, OTEL_EXPORTER_OTLP_HEADERS, and OTEL_EXPORTER_OTLP_PROTOCOL for spring boot starter (#9950)
  • Add elasticsearch-api-client as instrumentation name to elasticsearch-api-client-7.16 (#10102)
  • Add instrumentation for druid connection pool (#9935)
  • Remove deprecated rocketmq setting (#10125)
  • JMX metrics for Tomcat with 'Tomcat' JMX domain (#10115)
  • Capture the SNS topic ARN under the 'messaging.destination.name' span attribute. (#10096)
  • Add network attributes to rabbitmq process spans (#10210)
  • Add UserExcludedClassloadersConfigurer (#10134)
  • Apply both server attributes & network attributes to Lettuce 5.1 (#10197)

🛠️ Bug fixes

  • Fix aws propagator presence check in spring boot starter (#9924)
  • Capture authority from apache httpclient request when HttpHost is null (#9990)
  • Fix NoSuchBeanDefinitionException with the JDBC driver configuration in spring boot starter (#9978)
  • Null check for nullable response object in aws sdk 1.1 instrumentation (#10029)
  • Fix using opentelemetry-spring-boot with Java 8 and Gradle (#10066)
  • Fix transforming Java record types (#10052)
  • Fix warnings from the spring boot starter (#10086)
  • Resolve ParameterNameDiscoverer Bean Conflict in spring-boot-autoconfigure (#10105)

Version 1.32.0 (2023-11-18)

Migration notes

  • Old server/client socket getter methods deprecated (#9716)

📈 Enhancements

  • Allow enabling receive telemetry in kafka library instrumentation (#9693)
  • Add JdbcTelemetry and JdbcTelemetryBuilder (#9685)
  • Rename http.resend_count to http.request.resend_count (#9700)
  • Define url.scheme in terms of logical operation in HTTP server semconv (when opting in to new semconv) (#9698)
  • Generate only consumer span for sqs receive message (#9652)
  • Replace (client|server).socket.(address|port) attributes with network.(peer|local).(address|port) (when opting in to new semconv) (#9676)
  • Add capability for invokedynamic InstrumentationModules to inject proxies (#9565)
  • Make network.transport and network.type opt-in (when opting in to new semconv) (#9719)
  • Factor in X-Forwarded-Host/Forwarded when capturing server.address and server.port (when opting in to new semconv) (#9721)
  • Move class that should've been internal to internal package (#9725)
  • Only set server.port when server.address is set (when opting in to new semconv) (#9737)
  • Add messaging conventions to sqs spans (#9712)
  • Make the JDBC driver config work with the OTel starter (#9625)
  • Don't normalize the '-' character in HTTP header names when opting in to new semconv (#9735)
  • Add instrumentation for jaxws metro 3.0+ (#9705)
  • Change user_agent.original from recommended to opt-in on HTTP client spans (#9776)
  • Change the precedence between :authority and Host headers (#9774)
  • Move capturing enduser.id attribute behind a flag (#9751, #9788)
  • Remove conditional requirement on network.peer.address and network.peer.port (when opting in to new semconv) (#9775)
  • Change client.port from recommended to opt-in on HTTP server spans (when opting in to new semconv) (#9786)
  • Make url.scheme opt in for HTTP client metrics and make server.port required (when opting in to new semconv) (#9784)
  • Change http.request.body.size and http.response.body.size attributes from recommended to opt-in (when opting in to new semconv) (#9799)
  • Capture http.route in spring-cloud-gateway (#9597)
  • Always set messaging operation (#9791)
  • Change network.protocol.name from opt-in to conditionally required (when opting in to new semconv) (#9797)
  • Support specifying spring.application.name in the bootstrap.properties, bootstrap.yml and bootstrap.yaml (#9801)
  • Add process spans to aws-1 sqs instrumentation (#9796)
  • Implement capturing message headers for aws1 sqs spans (#9824)
  • Add process spans to aws2 sqs instrumentation (#9778)
  • Add service.name to MDC (#9647)
  • Capture enduser attributes in Spring Security (#9777)
  • Capture message id in aws1 sqs instrumentation (#9841)
  • Implement capturing message headers for aws2 sqs spans (#9842)
  • Move kafka metrics to separate instrumentation module (#9862)
  • Capture logback logger context properties (#9553)
  • Stable JVM semconv implementation: classes (#9821)
  • Stable JVM semconv implementation: threads (#9839)
  • Stable JVM semconv implementation: GC (#9890)
  • Bridge incubator metrics apis (#9884)
  • Ability to instrument logs before OTel injection into OTel appenders (#9798)
  • Suppress instrumentation based on suppress Context key (#9739)
  • Stable JVM semconv implementation: the rest (#9896)

🛠️ Bug fixes

  • Fix armeria server instrumentation for http2 (#9723)
  • Guard against null list from aws SQS lib (#9710)
  • Fix parsing port from mariadb jdbc url (#9863)

🧰 Tooling

  • Improve disableShadowRelocate (#9715)
  • Allow injection of helper bytecode as resources (#9752)
  • Rewrite @Advice.Enter for indy advice (#9887)

Version 1.31.0 (2023-10-12)

🌟 New javaagent instrumentation

📈 Enhancements

  • Add instrumentation for vert.x sql client withTransaction method (#9462)
  • Improve hibernate reactive instrumentation (#9486)
  • Support application.yaml files in SpringBootServiceNameDetector (#9515)
  • Add Spring Boot service version finder / ResourceProvider (#9480)
  • Split hibernate reactive instrumentation (#9531)
  • Rework reactor netty context tracking (#9286)
  • Improve spring data reactive instrumentation (#9561)
  • Support akka http latest version (#9573)
  • Enhance AWS SDK Instrumentation with Detailed HTTP Error Information (#9448)
  • Update HTTP metrics' descriptions (#9635)
  • Remove server.socket.address from HTTP/RPC metrics (#9633)
  • Remove 0 bucket from stable HTTP metrics (#9631)
  • Suppress nested http client spans in aws2 instrumentation (#9634)
  • Implement spec changes for grpc server span error status (#9641)
  • Improve vertx-sql client context propagation (#9640)
  • Add url.scheme to HTTP client metrics (#9642)
  • Add support for newVirtualThreadPerTaskExecutor (#9616)
  • Implement error.type attribute in HTTP semconv (#9466)
  • Emit package events (#9301)
  • Added Automatic-Module-Name header to MANIFEST.MF in instrumentation libraries (#9140)
  • Support paths in peer.service mappings (#9061)
  • Compile ktor library instrumentation for earlier kotlin version (#9661)

🛠️ Bug fixes

  • Fix NPE happening when .headersWhen() is used (reactor-netty) (#9511)
  • Spring webflux: add user spans as children of the controller span (#9572)
  • Make netty ChannelPipeline removeLast return user handler (#9584)

Version 1.30.0 (2023-09-14)

Migration notes

  • Experimental HTTP server metrics have been split out from HttpServerMetrics into a separate class HttpServerExperimentalMetrics (#9259)
  • HttpClientResend has been renamed to HttpClientResendCount, HttpRouteHolder has been renamed to HttpServerRoute (#9280)
  • The previously deprecated otel.javaagent.experimental.extensions configuration was removed (it is replaced by otel.javaagent.extensions) (#9378)

🌟 New javaagent instrumentation

  • Add instrumentation for hibernate reactive (#9304)

📈 Enhancements

  • Don't log stack trace for expected exceptions in AWS SDK instrumentation (#9279)
  • Add support for the AWS Secrets Manager JDBC URLs (#9335)
  • More support for upcoming semantic convention changes (#9346 #9345, #9320, #9355, #9381, #9441)
  • Unwrap Runnable in ThreadPoolExecutor before/after methods (#9326)
  • Add javaagent to instrumentation bom (#9026)
  • Add support for multiple headers in AlternateUrlSchemeProvider (#9389)
  • Skip PreparedStatement wrappers (#9399)
  • Disable Elasticsearch instrumentation for ES clients 8.10+ (#9337)
  • Disable elasticsearch-rest-7.0 instrumentation when elasticsearch-java 8.10+ is present (#9450)
  • Use attributes advice for HTTP & RPC metrics (#9440)
  • Update Messaging semantic conventions to 1.21.0 (#9408)
  • Add semconv to alpha bom (#9425)

🛠️ Bug fixes

  • Ensure .class files aren't present in the resources library MR jar (#9245)
  • Fixed getDefinedPackage lookup for OpenJ9 (8) (#9272)
  • Ignore aws sdk v2 presign requests (#9275)
  • Add logging timestamp for log4j1 appender instrument (#9309)
  • Fix VerifyError with kotlin @WithSpan instrumentation (#9313)
  • Fix serializing key to string in Lettuce instrumentation (#9347)
  • Auto-instrumentation with JMX not working without a trigger (#9362)
  • Return default DbInfo when connection is null (#9413)
  • Fix instrumentation for reactor kafka 1.3.21 (#9445)

Version 1.29.0 (2023-08-17)

Migration notes

  • NetClientAttributesExtractor and NetServerAttributesExtractor have been deprecated (#9165, #9156)
  • HttpClientAttributesGetter now extends NetClientAttributesGetter and HttpServerAttributesGetter extends NetServerAttributesGetter (#9015, #9088)
  • A couple of Spring starter configuration options have been renamed to match Java agent options:
    • otel.springboot.httpclients.enabled -> otel.instrumentation.spring-webmvc.enabled or otel.instrumentation.spring-webmvc.enabled depending on the underlying http client
    • otel.springboot.aspects.enabled -> otel.instrumentation.annotations.enabled (#8950)
  • Previously deprecated suppression key executor was removed from executors module, the new suppression key is executors (#9064)

🌟 New javaagent instrumentation

🌟 New library instrumentation

  • Elasticsearch rest client (#8911)

📈 Enhancements

  • Include OpenTelemetry logging appenders in the Spring Starter (#8945)
  • Support RPC metrics under "stable" http semconv opt-in (#8948)
  • Support the http.request.method_original attribute under "stable" semconv opt-in (#8779)
  • Make server.socket.* attributes on the HTTP server side opt-in (#8747)
  • Fill additional db.* attributes on DataSource#getConnection() (#8966)
  • Lettuce instrumentation - optimization to avoid extra toString() (#8984)
  • Allow overriding span name in spring web library instrumentation (#8933)
  • Implement HTTP resend spec for Reactor Netty (excl CONNECT spans) (#8111)
  • Set process.runtime.jvm.system.cpu.load_1m metric unit to {run_queue_item} (#8777)
  • Update elasticsearch instrumentation to work with latest version (#9066)
  • Reactor Netty: emit actual HTTP client spans on connection errors (#9063)
  • Rename http.*.duration to http.*.request.duration under "stable" semconv opt-in (#9089)
  • Snippet inject support for non-empty head tags (#8736)
  • Update network.protocol.version 2.0 -> 2 and 3.0 -> 3 (#9145)
  • @WithSpan support for kotlin coroutines (#8870)

🛠️ Bug fixes

  • Fix incompatibility between quarkus resteasy reactive and vertx-web instrumentations (#8998)
  • Fix IllegalArgumentException in MetroServerSpanNaming (#9075)
  • Fix rector netty instrumentation under concurrency (#9081)
  • Improve grpc cancellation propagation (#8957)
  • Add missing timestamp for jboss logmanager instrumentation (#9159)
  • Handle kafka METRIC_REPORTER_CLASSES_CONFIG being set to a List (#9155)
  • Fix NullPointerException with Pulsar and SSL (#9166)
  • Netty 4.1: handle closing connection before the request completes (#9157)
  • Micrometer bridge: use app's thread context class loader for callbacks into app (#9000)
  • Fix context propagation in Executor#execute() for non-capturing lambdas (#9179)
  • Ensure reactor netty spans are ended in the order they were started (#9203)

Version 1.28.0 (2023-07-12)

Migration notes

  • Rename HTTP configuration settings (#8758)
    • otel.instrumentation.http.capture-headers.client.requestotel.instrumentation.http.client.capture-request-headers
    • otel.instrumentation.http.capture-headers.client.responseotel.instrumentation.http.client.capture-response-headers
    • otel.instrumentation.http.capture-headers.server.requestotel.instrumentation.http.server.capture-request-headers
    • otel.instrumentation.http.capture-headers.server.responseotel.instrumentation.http.server.capture-response-headers

📈 Enhancements

  • Support latest armeria release (#8745)
  • Support latest mongo release (#8785)
  • Remove server.{address,port} from HTTP server metrics (#8771)
  • aws-sdk-2.2.: Support injection into SQS.SendMessageBatch message attributes (#8798)
  • Log4j and Logback appenders opt-in to using GlobalOpenTelemetry (#8791)
  • aws-sdk-2.2: SNS.Publish support with experimental messaging propagator flag (#8830)
  • support for adding baggage to log4j 2 ContextData (#8810)
  • Micrometer bridge: interpret no SLO config as no buckets advice (#8856)
  • Instrumentation for Elasticsearch 8+ (#8799)
  • Add support for schemaUrls auto-computed from AttributesExtrators (#8864)
  • Initialize appenders in the spring boot starter (#8888)
  • Support reactor-netty 1.0.34+ (#8922)
  • Rename messaging operation "send" to "publish" per spec (#8929)
  • Extract query arguments without regex on lettuce 6 (#8932)

🛠️ Bug fixes

  • Fix logging timestamp (#8761)
  • Minor fixes to the server.* attributes extrator (#8772)
  • Fix context leak on call to AmazonS3.generatePresignedUrl (#8815)
  • Fix exception when pulsar has multiple service addresses (#8816)
  • Fix NPE in aws instrumentation on duplicate TracingExecutionInterceptor (#8896)
  • (micrometer) don't add . to empty unit with prometheus naming conventions (#8872)
  • Set server span name for aborted requests in quarkus resteasy native (#8891)
  • Fix instrumentation of Azure SDK EventHubs library (#8916)
  • Fix http attributes of AWS SDK V2 instrumentation (#8931)

Version 1.27.0 (2023-06-14)

Migration notes

  • Jersey 3.0 instrumentation suppression keys have changed from jaxrs-2.0 to jaxrs-3.0, and from jersey-2.0 to jersey-3.0 (#8486)
  • The opentelemetry-runtime-metrics artifact has been renamed and split into opentelemetry-runtime-telemetry-java8 and opentelemetry-runtime-telemetry-java17 (#8165, #8715)
  • InetSocketAddressNetServerAttributesGetter and InetSocketAddressNetClientAttributesGetter have been deprecated (#8341, #8591)
  • The new HTTP and network semantic conventions can be opted into using either the system property otel.semconv-stability.opt-in or the environment variable OTEL_SEMCONV_STABILITY_OPT_IN, which support two values:
    • http - emit the new, stable HTTP and networking attributes, and stop emitting the old experimental HTTP and networking attributes that the instrumentation emitted previously.
    • http/dup - emit both the old and the stable HTTP and networking attributes, allowing for a more seamless transition.
    • The default behavior (in the absence of one of these values) is to continue emitting the same HTTP and network semantic conventions that were emitted in 1.26.0.
    • Note: this option will be removed later this year after the new HTTP and network semantic conventions are marked stable, at which time the Java instrumentation version will be bumped from 1.x to 2.0, and the old HTTP and network semantic conventions will no longer be supported.

🌟 New javaagent instrumentation

📈 Enhancements

  • Use histogram advice in the Micrometer bridge (#8334)
  • Disable by default gauge-based histograms in the Micrometer bridge (#8360)
  • Specify ...jvm.gc.duration buckets using advice API (#8436)
  • Make spanKindExtractor configurable in Ktor instrumentations (#8255)
  • aws-sdk-2.2: Support non-X-Ray propagation for SQS (#8405)
  • Implement HTTP resend spec for OkHttp 3 (#7652)
  • Use jakarta.servlet.error.exception request attribute on jetty11 (#8503)
  • Provide spring-boot-autoconfigure configuration metadata (#8516)
  • Read AWS lambda tracing info from com.amazonaws.xray.traceHeader system property (#8368)
  • Skip not decorator check for classes in boot loader (#8594)
  • Change context propagation debug failures from error to warn (#8601)
  • JavaScript Snippet Injection Support Servlet 5 (#8569)
  • Faster type matching (#8525)
  • Explicitly disable the logging exporter by default to override the upcoming SDK autoconfigure module change in 1.27.0 and preserve existing behavior (#8647)
  • Support otel.sdk.disabled in the spring boot starter (#8602)
  • Add OTLP log exporter to the OpenTelemetry Spring Starter (#8493)
  • Suppress Spring Actuator instrumentation when micrometer instrumentation is suppressed (#8677)
  • Replace "1" with the appropriate units and don't fall back to "1" if the unit is unknown (#8668)
  • Added setOpenTelemetry method to log4j appender (#8231)

🛠️ Bug fixes

  • Fix using logback mdc instrumentation along with SocketAppender (#8498)
  • Fix failure when kafka metrics reporter is set to an empty string (#8523)
  • Remove extra space from kubernetes client span name (#8540)
  • Fix jetty context leak (#8552)
  • Filter out scalar Mono/Flux instances (#8571)
  • End netty client span when channel is closed (#8605)
  • Unregistering jmx gc metrics on close (#8650)
  • Fix snippet injection ClassCastException (#8701)
  • Only instrument the actual Spring TaskScheduler implementations (#8676)

Version 1.26.0 (2023-05-11)

Migration notes

  • java.util.concurrent executors instrumentation suppression key has changed from executor to executors (#8451)

🌟 New javaagent instrumentation

  • Add instrumentation for vertx-sql-client (#8311)

🌟 New library instrumentation

📈 Enhancements

  • Make net.transport an optional attribute (#8279)
  • Introduce @AddingSpanAttributes annotation (#7787)
  • JavaScript snippet injection (#7650)
  • Map peer.service also from net.sock.peer.name (#7888)
  • Set up EarlyInitAgentConfig even earlier (#8413)

🛠️ Bug fixes

  • Fix nested http.route (#8282)
  • Fix undertow instrumentation with http pipelining (#8400)
  • Fix http pipelining on Grizzly (#8411)
  • Fix http pipelining on Netty 4.1 server (#8412)
  • Allow transforming classes with missing field types (#8393)
  • Fix reactor flux retry context leak (#8456)

🧰 Tooling

  • Introduce new incubating InstrumenterBuilder methods (#8392)

Version 1.25.1 (2023-04-27)

  • Fix apache pulsar instrumentation missing from the Java agent (#8378)

Version 1.25.0 (2023-04-13)

Migration notes

  • Apache Pulsar instrumentation name is changed from io.opentelemetry.apache-pulsar-2.8 to io.opentelemetry.pulsar-2.8 and Apache Camel instrumentation name is changed from io.opentelemetry.apache-camel-2.20 to io.opentelemetry.camel-2.20 (#8195)
  • Mojarra instrumentation suppression key has changed from mojarra to jsf-mojarra and MyFaces instrumentation suppression key has changed from myfaces to jsf-myfaces (#7811)

🌟 New javaagent instrumentation

  • R2DBC (#7977)
  • Add JFR streaming metrics gatherer (#7886)
  • ZIO 2.0 instrumentation (#7980)

🌟 New library instrumentation

  • R2DBC (#7977)
  • Add JFR streaming metrics gatherer (#7886)
  • Add library instrumentation for java http client (#8138)

📈 Enhancements

  • Move X-Ray Env Variable propagation to span link instead of parent (#7970)
  • Reduce memory usage for ClassLoaderHasClassesNamedMatcher (#7866)
  • Remove password from db.user parsed from JDBC url (#8106)
  • Ignore appd agent classes (#8065)
  • Add http client metrics to apache http library instrumentation (#8128)
  • Instrument additional pulsar receive methods (#8171)
  • Support latest Hibernate 6 version (#8189)
  • Support spring boot service name detector when spring boot application is packaged in one jar (#8101)
  • Support parsing Spring boot service name when more than one yaml is defined (#8006)
  • Add option to capture logback key value pairs (#8074)
  • Bridge agent logs into application's slf4j logger (#7339, #8228)
  • Better container ID parsing (#8206)
  • Pulsar batch receive instrumentation (#8173)
  • Improve compatibility with SecurityManager (#7983)
  • Instrument akka-http bindAndHandle (#8174)
  • Spring scheduling: run error handler with the same context as task (#8220)
  • Switch from http.flavor to net.protocol.* (#8131, #8244)
  • Support latest Armeria release (#8247)
  • Populate process.command_args for Java 9+ and improve process.command_line for Java 8 (#8130)

🛠️ Bug fixes

  • Fix TracingCqlSession ClassCastException (#8041)
  • Kafka: avoid registering duplicate metrics reporter (#8099)
  • Prefix baggage key not value when adding it to logback mdc (#8066)
  • Fix error when using shardingsphere (#8110)
  • Fix order of cxf handlers to enable symmetric tracing around jaxws handler chain (#8160)
  • Fix javaagent armeria server instrumentation (#8281)

🧰 Tooling

Version 1.24.0 (2023-03-15)

Migration notes

🌟 New javaagent instrumentation

🌟 New library instrumentation

  • Add Ktor client instrumentation (#7982, #7997)
  • Add Spring Webflux server instrumentation (#7899)

📈 Enhancements

  • Implement messaging.kafka.* attributes spec (#7824, #7860)
  • Make RxJava2 instrumentation Android-friendly (#7895)
  • Support more semantic convention for RocketMQ trace (#7871)
  • Instrumenting cassandra executeReactive method (#6441)
  • Make the OpenTelemetry Logback appender work with GraalVM native images (#7989)
  • Add baggage to Logback MDC; controlled by a configuration flag (#7892)
  • Make the Spring Boot autoconfigure module work with Spring Boot 3 (#8028, #8051)

🛠️ Bug fixes

  • Handle JMX MBean attributes with embedded dots (#7841)
  • Fix ClassCastException when using -Dotel.jmx.target.system=tomcat (#7884)
  • Fix NPE in the AWS SDK 2 instrumentation when request instrumentation is suppressed (#7953)
  • Fix Kotlin coroutine context propagation (#7879)
  • Fix the JAX-RS annotation instrumentation on Open Liberty (#7890)
  • Fix an AbstractMethodError in the Logback instrumentation (#7967)
  • Fix NPE in the RabbitMQ instrumentation (#8021)
  • Fix JMX metrics usage examples (#7877)

🧰 Tooling

  • Remove deprecated instrumentation-api-semconv code (#7838)
  • Look up helper class bytes when they are needed (#7839)
  • Run smoke tests using Open Liberty 21.0.0.12 and 22.0.0.12 (#7878, #7857)
  • Add additional groovy script classloaders to ignore list. (#7460)
  • Make AggregationTemporality configurable for OtlpInMemoryMetricExporter in the agent-for-testing module (#7904)
  • Upgrade to gradle 8.0.2 (#7910, 7978)
  • Replace the test-sets plugin with Gradle test suites (#7930, #7933, #7932, #7931, #7929, #7946, #7945, #7944, #7943, #7942, #7928, #7951)
  • Add a utility for tracking HTTP resends (#7986)
  • Remove deprecated messaging.url attribute from messaging getter (#8008)
  • Add protocol name&version to net attribute getters (#7994)
  • Test http client captured headers (#7993)
  • Improve compatibility with other agents (#7916)
  • Share timer class used by messaging instrumentations (#8009)
  • Convert groovy tests to java (#7976, #7975, #7912)
  • Check that extracting extension jar doesn't escape designated directory (#7908)
  • Assert user agent when it is present in HTTP client tests (#7918)
  • Update the OpenTelemetry SDK version to 1.24.0 (#8027)
  • Provide ability to add HTTP server response headers, with Tomcat implementation (#7990)

Version 1.23.0 (2023-02-16)

Migration notes

  • HTTP span names are now "{http.method} {http.route}" instead of just "{http.route}", reflecting the recent change in the HTTP semantic conventions (#7730)
  • Added the base version into library package names to make room for other base versions without breaking backwards compatibility in the future once these artifacts are declared stable (#7608, #7752, #7764)
    • io.opentelemetry.instrumentation.spring.web.SpringWebTelemetryio.opentelemetry.instrumentation.spring.web.v3_1.SpringWebTelemetry
    • io.opentelemetry.instrumentation.spring.webflux.SpringWebfluxTelemetryio.opentelemetry.instrumentation.spring.webflux.v5_0.SpringWebfluxTelemetry
    • io.opentelemetry.instrumentation.spring.integration.SpringIntegrationTelemetryio.opentelemetry.instrumentation.spring.integration.v4_1.SpringIntegrationTelemetry
    • io.opentelemetry.instrumentation.logback.v1_0.OpenTelemetryAppenderio.opentelemetry.instrumentation.logback.mdc.v1_0.OpenTelemetryAppender
    • io.opentelemetry.instrumentation.apachedbcp.ApacheDbcpTelemetryio.opentelemetry.instrumentation.apachedbcp.v2_0.ApacheDbcpTelemetry
    • io.opentelemetry.instrumentation.c3p0.C3p0Telemetryio.opentelemetry.instrumentation.c3p0.v0_9.C3p0Telemetry
    • io.opentelemetry.instrumentation.graphql.GraphQLTelemetryio.opentelemetry.instrumentation.graphql.v12_0.GraphQLTelemetry
    • io.opentelemetry.instrumentation.guava.GuavaAsyncOperationEndStrategyio.opentelemetry.instrumentation.guava.v10_0.GuavaAsyncOperationEndStrategy
    • io.opentelemetry.instrumentation.hikaricp.HikariTelemetryio.opentelemetry.instrumentation.hikaricp.v3_0.HikariTelemetry
    • io.opentelemetry.instrumentation.kafkaclients.KafkaTelemetryio.opentelemetry.instrumentation.kafkaclients.v2_6.KafkaTelemetry
    • io.opentelemetry.instrumentation.oracleucp.OracleUcpTelemetryio.opentelemetry.instrumentation.oracleucp.v11_2.OracleUcpTelemetry
    • io.opentelemetry.instrumentation.ratpack.RatpackTelemetryio.opentelemetry.instrumentation.ratpack.v1_7.RatpackTelemetry
    • io.opentelemetry.instrumentation.reactor.ContextPropagationOperator io.opentelemetry.instrumentation.reactor.v3_1.ContextPropagationOperator
    • io.opentelemetry.instrumentation.viburdbcp.ViburTelemetryio.opentelemetry.instrumentation.viburdbcp.v11_0.ViburTelemetry
  • Several instrumentation scope names have been fixed (#7632)
    • io.opentelemetry.cxf-jaxrs-3.2io.opentelemetry.jaxrs-2.0-cxf-3.2
    • io.opentelemetry.jersey-2.0io.opentelemetry.jaxrs-2.0-jersey-2.0 or io.opentelemetry.jaxrs-3.0-jersey-3.0 as appropriate
    • io.opentelemetry.resteasy-3.0io.opentelemetry.jaxrs-2.0-resteasy-3.0
    • io.opentelemetry.resteasy-3.1io.opentelemetry.jaxrs-2.0-resteasy-3.1
    • io.opentelemetry.resteasy-6.0io.opentelemetry.jaxrs-3.0-resteasy-6.0
    • io.opentelemetry.jws-1.1io.opentelemetry.jaxws-jws-api-1.1
    • io.opentelemetry.vertx-kafka-client-3.5io.opentelemetry.vertx-kafka-client-3.6
    • io.opentelemetry.hibernate-4.3io.opentelemetry.hibernate-procedure-call-4.3
  • All methods in all *Getter classes in instrumentation-api-semconv have been renamed to use the get*() naming scheme (#7619)
  • Return interfaces instead of concrete implementations in instrumentation-api-semconv (#7658)

📈 Enhancements

  • Support Spring Web 6 in library instrumentation (#7551)
  • Add gRPC request metadata instrumentation (#7011)
  • Pass context to content length http metrics meters (#7506)
  • Update SQL span name for procedures (#7557)
  • Ratpack services OpenTelemetry (#7477)
  • Ignore janino classloader (#7710)
  • Improve type resolution cache for classes in java package (#7714)
  • End netty client span before callbacks (#7737)
  • Support slf4j to log4j2 (#7656)
  • Add net.host.port to the http.server.active_requests metric (#7757)
  • Allow JDBC library instrumentation to use a custom OpenTelemetry instance to be more DI (e.g. Spring Boot) friendly (#7697)
  • Dubbo: don't create spans for calls inside the same jvm (#7761)
  • Bridge OpenTelemetry metrics batch API (#7762)
  • Support Spring Boot 3 in autoconfigure module (#7784)
  • Change Spring Scheduling to not capture span for one-time jobs (only repeated jobs) (#7760)
  • Add instrumentation for hibernate 6 (#7773)
  • Put http.route attribute onto http.server.duration on Play framework request processing (#7801)
  • Add Jakarta JSF 3.0+ instrumentation (#7786)
  • Capture net.sock.peer.addr more reliably in grpc client instrumentation (#7742)

🛠️ Bug fixes

  • Fix potential startup failure (#7567)
  • Fix NoClassDefFoundError happening when snakeyaml is used on a custom JRE (#7598)
  • Fix inconsistent handling of net.peer.port in HTTP instrumentations (#7618)
  • Fix concurrency issue in OpenTelemetryDriver (#7628)
  • Fix ClassCastException with redisson batch with atomic write option (#7743)
  • Ensure kafka configuration remains serializable (#7754, #7789)

Version 1.22.1 (2023-01-14)

  • Fix potential startup failure (#7567)

Version 1.22.0 (2023-01-12)

📈 Enhancements

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

🛠️ Bug fixes

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

🧰 Tooling

  • Muzzle logs should be logged using the io.opentelemetry.* logger name (#7446)

Version 1.21.0 (2022-12-13)

📈 Enhancements

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

🛠️ Bug fixes

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

🧰 Tooling

  • Allow disabling muzzle checks for specific methods (#7289)

Version 1.20.2 (2022-11-22)

🛠️ Bug fixes

Version 1.20.1 (2022-11-19)

📈 Enhancements

  • Update SDK version from 1.19.0 to 1.20.1 (#7223)

Version 1.20.0 (2022-11-17)

Instrumentation annotations module is declared stable in this release (io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:1.20.0).

Migration notes

  • Renamed configuration property otel.instrumentation.kafka.client-propagation.enabled to otel.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) and HttpServerAttributesExtractor#builder(HttpServerAttributesGetter) (#7020)
  • Renamed annotation instrumentation property name for the recent opentelemetry-instrumentation-annotations package from otel.instrumentation.opentelemetry-annotations.exclude-methods to otel.instrumentation.opentelemetry-instrumentation-annotations.exclude-methods (#7196)

🌟 New javaagent instrumentation

  • OpenSearch 1.x and 2.x (#6998)
  • JMX Metric Insight (#6573)

📈 Enhancements

  • 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 with process.runtime.jvm.gc.duration histogram (#6964)

🛠️ Bug fixes

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

🧰 Tooling

  • Revert removing the mavenCentral repo from the muzzle check plugin (#6937)
  • Make java.sql classes available to the agent and extensions (#7038)

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-spansotel.instrumentation.common.experimental.controller-telemetry.enabled (important: note that the meaning is inverted)
    • otel.instrumentation.common.experimental.suppress-view-spansotel.instrumentation.common.experimental.view-telemetry.enabled (important: note that the meaning is inverted)
    • otel.instrumentation.netty.always-create-connect-spanotel.instrumentation.netty.connection-telemetry.enabled
    • otel.instrumentation.reactor-netty.always-create-connect-spanotel.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 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)