Changelog
Unreleased
Version 1.18.0 (2022-09-14)
The opentelemetry-instrumentation-api
artifact is declared stable in this release.
Migration notes
- There were a few late-breaking changes in
opentelemetry-instrumentation-api
, prior to it being
declared stable:
InstrumenterBuilder.addAttributesExtractors(AttributesExtractor...)
was removed, use instead
addAttributesExtractors(AttributesExtractor)
or
addAttributesExtractors(Iterable<AttributesExtractor>)
SpanLinksExtractor.extractFromRequest()
was removed, use instead manual extraction
ErrorCauseExtractor.jdk()
was renamed to ErrorCauseExtractor.getDefault()
ClassNames
utility was removed with no direct replacement
- The deprecated
io.opentelemetry.instrumentation.api.config.Config
and related classes
have been removed
(#6501)
- Net attributes getters were updated to reflect latest specification changes
(#6503)
- The deprecated
Ordered
interface was removed from the opentelemetry-javaagent-extension-api
,
use instead the Ordered
interface from opentelemetry-sdk-extension-autoconfigure-spi
(#6589)
📈 Enhancements
- Add Spring Boot service name guesser / ResourceProvider
(#6516)
- Move micrometer shim library instrumentation back
(#6538)
- Add grpc status code to metrics attrs
(#6556)
- Add mongo sanitization configuration
(#6541)
- Add kafka client metrics to the javaagent instrumentation
(#6533)
- Add experimental span attribute job.system
(#6586)
- Add code attributes for Logback
(#6591)
- Reactor instrumentation: do not make root context current
(#6593)
🛠️ Bug fixes
- Fix default-enabled config
(#6491)
- Fix new jdbc javaagent config
(#6492)
- Fix jaxrs async instrumentation race
(#6523)
- Fix spring webmvc instrumentation name
(#6557)
- Fix spring boot
@WithSpan
handling
(#6619)
Version 1.17.0 (2022-08-18)
Migration notes
- The
@WithSpan
and @SpanAttribute
annotations has been moved from the
io.opentelemetry:opentelemetry-extension-annotations
artifact to the
io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations
in order to live and
evolve alongside the instrumentation itself. The instrumentation will continue to support the old
artifact for backwards compatibility, but new annotation-based features will only be built out and
supported with the new annotation artifact.
InstrumenterBuilder.newInstrumenter()
is renamed to InstrumenterBuilder.buildInstrumenter()
(#6363)
io.opentelemetry.instrumentation.api.config.Config
is deprecated
(#6360)
HttpCommonAttributesGetter.requestContentLengthUncompressed()
and
responseContentLengthUncompressed
are deprecated
(#6383)
- Ktor 2.0 instrumentation name is changed from
io.opentelemetry.ktor-1.0
to
io.opentelemetry.ktor-2.0
(#6452)
io.opentelemetry.opentelemetry-annotations-1.0
instrumentation name is changed to
io.opentelemetry.opentelemetry-instrumentation-annotations-1.16
(#6450)
- Liberty instrumentation names are changed from
io.opentelemetry.liberty
and
io.opentelemetry.liberty-dispatcher
to io.opentelemetry.liberty-20.0
and
io.opentelemetry.liberty-dispatcher-20.0
(#6456)
- The 2-arg variant of HttpCommonAttributesGeter#statusCode() is deprecated
(#6466)
- The
opentelemetry-spring-starter
artifact has been renamed to
opentelemetry-spring-boot-starter
, the opentelemetry-zipkin-exporter-starter
artifact has been
renamed to opentelemetry-zipkin-spring-boot-starter
, and the
opentelemetry-zipkin-exporter-starter
artifact has been renamed to
opentelemetry-zipkin-spring-boot-starter
(#6453)
- Update net semantic convention changes based on recent specification changes:
net.peer.ip
renamed to net.sock.peer.addr
, net.host.ip
renamed to net.sock.host.addr
,
net.peer.name
renamed to net.sock.peer.name
for socket-level instrumentation,
and NetClientAttributesGetter.peerIp()
, NetServerAttributesGetter.peerIp()
, and
NetServerAttributesGetter.peerPort()
are deprecated
(#6268)
📈 Enhancements
- Move buffer pool metrics out of experimental
(#6370)
- Add code attributes to several instrumentations
(#6365)
- Add http.client|server.request|response.size metrics
(#6376)
- Add Kafka instrumentation to the Spring Boot starter
(#6371)
- Extract HTTP request & response content length from headers
(#6415)
- Support DataDirect and Tibco Jdbc URLs
(#6420)
- Set http.route in spring-autoconfigure webmvc instrumentation
(#6414)
- Grizzly: capture all matching request & response headers
(#6463)
- Capture messaging header value as span attribute
(#6454)
- Add JDBC-specific sanitizer property
(#6472)
🛠️ Bug fixes
- Fix duplicate spans for Quarkus gRPC server
(#6356)
- Update Kafka library instrumentation to support version 3.0.0 and later
(#6457)
- Mongodb: avoid duplicate tracing
(#6465)
- Fix netty instrumentation NoSuchElementException
(#6469)
Version 1.16.0 (2022-07-19)
Migration notes
- Config has been replaced by ConfigProperties in Javaagent extensions SPIs
- The deprecated TimeExtractor has been removed
- The
opentelemetry-instrumentation-api-annotation-support
artifact has been renamed to
opentelemetry-instrumentation-annotation-support
- The
opentelemetry-annotations
instrumentation suppression key has been renamed to
opentelemetry-extension-annotations
- The 'otel.javaagent.experimental.use-noop-api' flag has been removed, as this capability is now
available via the
otel.experimental.sdk.enabled
flag
🌟 New javaagent instrumentation
- C3P0 connection pool metrics
(#6174)
- JVM buffer pool metrics
(#6177)
- Kafka client metrics
(#6138)
- dropwizard-metrics to OpenTelemetry metrics bridge
(#6259)
🌟 New library instrumentation
- C3P0 connection pool metrics
(#6174)
- JVM buffer pool metrics
(#6177)
- Kafka client metrics
(#6138)
- Add metrics & micrometer support to spring-boot-autoconfigure
(#6270)
- Spring Kafka library instrumentation
(#6283)
📈 Enhancements
- Update GraphQL instrumentation to match spec
(#6179)
- Make rpc.grpc.status_code required
(#6184)
- Always pass Context when recording HttpServerMetrics
(#6223)
- Capture enduser.id in servlet instrumentation
(#6225)
- Support metric view configuration file in the Javaagent
(#6228)
- Aws sdk2 sqs context propagation
(#6199)
- More Spring JMS support
(#6308)
- Hikaricp: Avoid registering duplicate metrics
(#6325)
🛠️ Bug fixes
- Fix liberty net.peer.port
(#6274)
Version 1.15.0 (2022-06-16)
Migration notes
- The
opentelemetry-jboss-logmanager-1.1
artifact has been renamed to
opentelemetry-jboss-logmanager-appender-1.1
- The play instrumentation name has changed from
play
to play-mvc
(#6106)
- The vertx-http-client instrumentation name has changed from
vertx-client
to vertx-http-client
(#6106)
- The metric
process.runtime.java.memory.max
has been renamed to process.runtime.java.memory.limit
(#6161)
🌟 New javaagent instrumentation
- JVM classes metrics
(#6069)
- JVM threads metrics
(#6070)
- Vibur DBCP connection pool metrics
(#6092)
- tomcat-jdbc connection pool metrics
(#6102)
- JVM cpu metrics
(#6107)
- Oracle UCP connection pool metrics
(#6099)
- Apache DBCP2 datasource metrics
(#6175)
- Add instrumentation for JAX-RS 3.0
(#6136)
🌟 New library instrumentation
- JVM classes metrics
(#6069)
- JVM threads metrics
(#6070)
- Vibur DBCP connection pool metrics
(#6092)
- tomcat-jdbc connection pool metrics
(#6102)
- JVM cpu metrics
(#6107)
- Oracle UCP connection pool metrics
(#6099)
- Apache DBCP2 datasource metrics
(#6175)
📈 Enhancements
- Enable grizzly instrumentation by default
(#6049)
- Instrumentation for redisson 3.17.2+
(#6096)
- Instrumentation for jboss-logmanager getMdcCopy()
(#6112)
- Allow specifying a comma separated list of extensions
(#6137)
🛠️ Bug fixes
- Fix redisson ClassCastException
(#6054)
- Fix debug logging
(#6085)
- HttpURLConnection instrumentation can capture wrong http.method
(#6053)
- fix bug: get return type in a wrong way for method instrumentation
(#6118)
- Show correct runnable name in spring scheduling actuator
(#6140)
- Fix ClassCastException in JDBC instrumentation
(#6088)
🧰 Tooling
- Remove TimeExtractor and use internal API for setting start/end timestamps
(#6051)
- Change SpanStatusExtractor to use a builder that can set status description
(#6035)
- Make gRPC metadata available to AttributeExtractors
(#6125)
Version 1.14.0 (2022-05-17)
Migration notes
- The
opentelemetry-log4j-appender-2.16
artifact has been renamed to
opentelemetry-log4j-appender-2.17
- The
opentelemetry-log4j-context-data-2.16-autoconfigure
artifact has been renamed to
opentelemetry-log4j-context-data-2.17-autoconfigure
- Micrometer library instrumentation has been removed as it has been moved to the core repo and
is now published under
io.opentelemetry:opentelemetry-micrometer1-shim
- The rxjava javaagent instrumentation names for suppression have changed to
rxjava
AgentListener#beforeAgent()
has been deprecated, as it is not expect to be needed by extensions
authors
ConfigPropertySource
has been deprecated in favor of ConfigCustomizer
- Several changes in the Instrumentation API
RequestMetrics
has been renamed to OperationMetrics
RequestListener
has been renamed to OperationListener
ErrorCauseExtractor#extractCause()
has been renamed to extract()
ContextCustomizer
and RequestListener
start()
/end()
methods have been renamed to
onStart()
/onEnd()
- The
opentelemetry-javaagent-instrumentation-api
artifact has been merged into the
opentelemetry-javaagent-extension-api
artifact
🌟 New javaagent instrumentation
- Add jboss-logmanager mdc support
(#5842)
- Spring-kafka single record instrumentation
(#5904)
- Add metrics instrumentation for grpc
(#5923)
- Add vertx-kafka-client instrumentation
(#5973,
#5982)
- Hide the GC runtime metrics behind an experimental config flag
(#5990)
- Add HikariCP connection pool metrics
(#6003)
🌟 New library instrumentation
- Add metrics instrumentation for grpc
(#5923)
- Add HikariCP library instrumentation
(#6023)
📈 Enhancements
- Enable span suppression by SpanKey by default
(#5779)
- record exception in dubbo high version
(#5892)
- Introduce LocalRootSpan (replacing ServerSpan)
(#5896)
- Add javaagent<->application context bridge for HttpRouteHolder
(#5838)
- Exclude spring temporary type matching class loader
(#5912)
- Load agent classes child first
(#5950)
- Avoid looking up annotation types during type matching
(#5906)
- Add an SPI for customizing Config just before it's set
(#6010)
🛠️ Bug fixes
- Fix duplicate class error on Android build
(#5882)
- Avoid npe in netty 4.1 instrumentation
(#5902)
- Fix logging exporter autoconfiguration issue
(#5928)
- fix NPE for commons-httpclient v3.1
(#5949)
- Exclude duplicate project classes from inst/
(#5957)
- Ignore known problematic jdbc wrappers
(#5967)
- Fix default enabled for runtime and oshi metrics
(#5989)
- Mitigate against another kafka leak
(#6021)
Version 1.13.1 (2022-04-22)
🛠️ Bug fixes
- Fix duplicate class error on Android build
(#5882)
- Fix spring-kafka single record instrumentation
(#5904)
Version 1.13.0 (2022-04-19)
Migration notes
- Micrometer instrumentation is now automatically applied to spring-boot-actuator apps
- Some configuration properties have been renamed:
otel.instrumentation.common.experimental.suppress-controller-spans
-> otel.instrumentation.common.experimental.controller-telemetry.enabled
(important: note that the meaning is inverted)
otel.instrumentation.common.experimental.suppress-view-spans
-> otel.instrumentation.common.experimental.view-telemetry.enabled
(important: note that the meaning is inverted)
otel.instrumentation.netty.always-create-connect-span
-> otel.instrumentation.netty.connection-telemetry.enabled
otel.instrumentation.reactor-netty.always-create-connect-span
-> otel.instrumentation.reactor-netty.connection-telemetry.enabled
- Runtime memory metric names were updated to reflect
semantic conventions
- Micrometer library instrumentation has been deprecated as it has been moved to the core repo and
is now published under
io.opentelemetry:opentelemetry-micrometer1-shim
- Library instrumentation entry points have been renamed from
*Tracing
to *Telemetry
🌟 New javaagent instrumentation
- GraphQL
(#5583)
- JBoss Log Manager
(#5737)
- Apache HttpClient 5.x async client
(#5697)
🌟 New library instrumentation
📈 Enhancements
- Elasticsearch rest client low cardinality span names
(#5584)
- Implement "Prometheus mode" for better micrometer->OTel->Prometheus support
(#5537)
- Apply micrometer instrumentation to spring-boot-actuator apps
(#5666)
- Sql sanitizer: handle double quoted table names
(#5699)
- Spring Boot Starter service-name is constant
(#5359)
- Update runtime memory metrics to reflect semantic conventions
(#5718)
- change rpc type in apache dubbo
(#5432)
- Rework context propagation to redisson async callback
(#5748)
- Resolve end strategy after WithSpan method instead of before.
(#5756)
- Allow scanning instrumented reactor publishers and only allow registe…
(#5755)
- Faster type matching
(#5724)
- Use UnsynchronizedAppenderBase as base class for our logback appender
(#5818)
- Do not set the http.route attribute in JSF instrumentations
(#5819)
- Use micrometer1-shim in micrometer javaagent instrumentation, deprecate library instrumentation
(#5820)
- Rename netty
always-create-connect-span
property to connection-telemetry
(#5834)
- Update the http.route attribute even for not sampled server spans
(#5844)
🛠️ Bug fixes
- Fix possible deadlock
(#5585)
- Prevent possible deadlock in downstream distro
(#5830)
- Limit problems from kafka iterator instrumentation thread context leak
(#5826)
🧰 Tooling
- Remove deprecated methods from instrumentation-api and library instrumentations
(#5575)
- Split out RpcAttributesGetter
(#5548)
- Run tests with jdk17
(#5598)
- Split out MessagingAttributesGetter
(#5626)
- Run Gradle and compile code with Java 17
(#5623)
- Rename library entrypoints to Telemetry
(#5624)
- Add InstrumenterBuilder.addRequestListener
(#5655)
- Simplify HttpUrlConnection instrumentation
(#5673)
- Convert all logging statements from slf4j to jul
(#5674)
- Allows passing an OpenTelemetry instance to registerObservers() methods.
(#5716)
- Make it possible to register multiple helper resources under the same…
(#5703)
- Split out instrumentation-api-semconv
(#5721)
- Move ClassNames & SpanNames to .util package
(#5746)
- Library instrumentation should read its version from a file
(#5692)
- Rename view and controller suppression config properties
(#5747)
- Deprecate AttributesExtractor#set() method
(#5749)
- Cleanup Config & ConfigBuilder API
(#5733)
- Instrumenter instrumentation version and schema url
(#5752)
Version 1.12.1 (2022-03-17)
🛠️ Bug fixes
- Elasticsearch rest client low cardinality span name
(#5584)
- Fix possible deadlock
(#5585)
Version 1.12.0 (2022-03-12)
🌟 New javaagent instrumentation
- Add Azure SDK instrumentation
(#5467)
📈 Enhancements
- Use repository interface name in spring data operation name
(#5352)
- Change the way Micrometer LongTaskTimer is bridged
(#5338)
- Updates to http.server_name
(#5369)
- Support forwarded proto field and x-forwarded-proto
(#5357)
- Remove server span peer name
(#5404)
- Add peer service support back to couchbase26
(#5451)
- Remove duplicative JAXRS HttpClient instrumentation
(#5430)
- Add experimental thread attributes for logs
(#5474)
- Add log4j 1.2 appender MDC capture
(#5475)
- Capture logback formatted message
(#5497)
- Add JBoss java.util.logging support
(#5498)
- Disable the messaging receive span telemetry by default
(#5500)
- Remove old experimental properties in CapturedHttpHeaders
(#5524)
- Avoid conflicts in Micrometer description mapping
(#5452)
🛠️ Bug fixes
- Fix another reverse lookup
(#5393)
- Regression in loading the prometheus exporter
(#5408)
- Fix muzzle failure on calls to primitive array clone
(#5405)
- Fix regression in spring-scheduling span name
(#5436)
- Fix android desugaring for HashMap.forEach
(#5468)
- Fix duplicate class definition of ContextDataProvider
(#5528)
- Do not propagate gRPC deadline when propagating OTel context via javaagent
(#5543)
🧰 Tooling
- Split out CodeAttributesGetter
(#5342)
- Add prometheus smoke test
(#5417)
- Set custom gRPC client/server span name extractor
(#5244)
- Split out DbClientAttributesGetter and SqlClientAttributesGetter
(#5354)
- Add builders for setting optional attributes on HTTP extractors
(#5347)
- Write http server tests in java
(#5501)
- Deprecate CapturedHttpHeaders and replace it with builder methods
(#5533)
- Update to Groovy 4
(#5532)
Version 1.11.1 (2022-02-21)
🛠️ Bug fixes
- Regression in loading the prometheus exporter
(#5408)
Version 1.11.0 (2022-02-11)
Migration notes
- The previous release (1.10.0) deprecated the entire
io.opentelemetry.instrumentation.api.tracer
package in the instrumentation-api
artifact, and the package was removed in this release.
- The javaagent
-slim
artifact has been dropped in this release, because the exporters are much
smaller now and there is no longer a significant size difference between the -slim
and default
artifacts.
- The
opentelemetry-aws-lambda-1.0
has been split into two artifacts
opentelemetry-aws-lambda-core-1.0
and opentelemetry-aws-lambda-events-2.2
.
🌟 New javaagent instrumentation
- Spring RMI instrumentation (#5033)
🌟 New library instrumentation
- Ratpack httpclient (#4787)
📈 Enhancements
- Add
http.route
to server spans where route was already being captured for span name
(#5086,
#5240,
#5242,
#5241,
#5239)
- Use RPC attributes from spec for AWS SDK
(#5166)
- SdkTracerProvider auto closed as separate Context Bean
(#5124) (#5125)
- Support redisson 3.16.8+
(#5201)
- Support AWS SDK v1 request object subclasses.
(#5231)
- Remove slim artifact
(#5251)
- kotlinx-coroutines-reactor context propagation
(#5196)
- Log a warning whenever GlobalOpenTelemetry.set() is called
(#5264)
- Use
http.route
in HttpServerMetrics
(#5266)
- Use VirtualField for associating netty listener with wrapper
(#5282)
- Add code attributes to spring-scheduling spans
(#5306)
- Propagate context into redisson async callback
(#5313)
- Add max measurements to Micrometer Timer & DistributionSummary
(#5303)
- Make it possible to configure base time unit used by the Micrometer bridge
(#5304)
- Make HttpClientMetrics report low cardinality metrics
(#5319)
- Implement NamingConvention support in Micrometer bridge
(#5328)
- Add net.peer.name and net.peer.port attributes for grpc client span
(#5324)
- Split lambda instrumentation into core and events
(#5326)
- Add jaeger remote sampler to agent
(#5346)
- Weak cache optimization
(#5344)
🛠️ Bug fixes
- Several micrometer instrumentation fixes
(#5118)
- Fix serialisation exception on default lambda events
(#4724)
- NoSuchMethodError when using agent and modules (JPMS)
(#5169)
- Spring boot cloud gateway, context propagation broken
(#5188)
- Akka http server span names are always akka.request #3478
(#5150)
- Recover from duplicate class definition errors
(#5185)
- Fix serialization for quartz JobExecutionContext
(#5263)
- End jedis span when operation actually ends
(#5256)
- Enable oshi ProcessMetrics in javaagent
(#5281)
- Add missing return type matchers to the executor instrumentation
(#5294)
- Fix triggering of DNS lookup
(#5297)
- Avoid potential for reverse name lookup
(#5305)
- Fix WeakConcurrentMap memory leak
(#5316)
- AWS Lambda instrumentation requires jackson and lambda-events on the classpath
(#5326)
🧰 Tooling
- Convert InstrumentationTestRunner from interface to abstract class
(#5112)
- Parameterize VirtualField field type
(#5165)
- Remove old TraceUtils and use InstrumentationTestRunner#run*Span() (almost) everywhere
(#5160)
- Remove deprecated tracer API
(#5175)
- Remove HttpServerTest#extraAttributes() method
(#5176)
- Rename ServerSpanNaming to HttpRouteHolder
(#5211)
- Don't run testLatestDeps on alpha/beta/rc versions
(#5258)
- Refactor HTTP attributes extractors to use composition over inheritance
(#5030,
#5194
#5267)
- Refactor AttributesExtractor so that it extracts route from Context
(#5288)
- Publish gradle-plugins to Maven Central
(#5333)
Version 1.10.1 (2022-01-27)
🛠️ Bug fixes
- Regression in project reactor context propagation instrumentation
(#5188)
- Recover from duplicate class definition errors
(#5185)
- StringIndexOutOfBoundsException in AWS SDK v1 when using request object subclass
(#5231)
- Update to OTel SDK 1.10.1
(#5218)
Version 1.10.0 (2022-01-15)
Migration notes
- The
opentelemetry-log4j-2.13.2
artifact has been renamed to opentelemetry-context-data-2.16-autoconfigure
- The
opentelemetry-logback-1.0
artifact has been renamed to opentelemetry-logback-mdc-1.0
- The
opentelemetry-ratpack-1.4
artifact has been renamed to opentelemetry-ratpack-1.7
and only supports Ratpack 1.7 and above now
🌟 New javaagent instrumentation
- Logback appender instrumentation to send logs through the OpenTelemetry logging pipeline
(#4939,
#4968)
- Log4j 2.x appender instrumentation to send logs through the OpenTelemetry logging pipeline
(#4944,
#4959,
#4966)
- Log4j 1.2 appender instrumentation to send logs through the OpenTelemetry logging pipeline
(#4943)
- java.util.logging instrumentation to send logs through the OpenTelemetry logging pipeline
(#4941)
- Micrometer instrumentation to send micrometer metrics through the OpenTelemetry metrics pipeline
(#4919,
#5001,
#5017)
🌟 New library instrumentation
- Logback appender to send logs through the OpenTelemetry logging pipeline
(#4984)
- Log4j 2.x appender to send logs through the OpenTelemetry logging pipeline
(#4375,
#4907)
- Ktor instrumentation
(#4983)
- Micrometer instrumentation to send micrometer metrics through the OpenTelemetry metrics pipeline
(#5063)
📈 Enhancements
- Renamed Apache Dubbo and Log4j MDC library artifacts
(#4779)
- Added http4 handler to apache-camel instrumentation
(#4650)
- Capture servlet request parameters
(#4703)
- Propagate Context instead of SpanContext in Kafka instrumentation
(#4806)
- Instrument ContextPropagationOperator to bridge lib/agent calls
(#4786)
- Add shouldStart() call to Armeria server instrumentation
(#4843)
- Capture RPC metrics
(#4838)
- Update log4j library base version
(#4914)
- Rename log4j-thread-context modules to log4j-context-data
(#4957)
- Support latest oshi version
(#4993)
- Support latest RxJava version
(#4954)
- Create producer span from spring integration instrumentation
(#4932)
- Capture servlet request parameters at the end of the request
(#5019)
- Don't extract deprecated cassandra keyspace attribute
(#5041)
- Add OTLP logs exporters
(#5060,
#5088)
- End redisson span when the operation actually ends
(#5073)
- Don't capture high-cardinality http.target as metrics attribute
(#5081)
🛠️ Bug fixes
- Remove virtual field interfaces from reflection results
(#4722)
- Work around jvm crash on early 1.8
(#4345)
- Fix http.url handing in vert.x 3 http client
(#4739)
- Capture missing RMI spans
(#4764)
- Avoid crashing on early 1.8 openjdk vms
(#4789)
- Fix Quarkus correlation
(#4883)
- Fix RabbitMQ instrumentation consumption on empty headers
(#4903)
- Fix NPE in Apache HttpClient 4.0 instrumentation
(#4913)
- Fix NPE in RocketMQ instrumentation
(#4901)
- Fix time units in HTTP & RPC metrics
(#4963)
- Fix some gauge types
(#4962)
- Fix context propagation for undertow async dispatch
(#4950)
- Fix redefinition failure on openj9
(#5009)
- Fix NPE in rmi server instrumentation
(#5042)
🧰 Tooling
- Merge start and end time extractors
(#4692)
- Move cache implementations to internal package
(#4746)
- Reorganize shared servlet code (intro to #4317)
(#4785)
- Move
AppServerBridge
and MappingResolver
to servlet-common:bootstrap
(#4817)
- Move
ServletContextPath
to servlet-common:bootstrap
(#4824)
- Expose AutoConfiguredOpenTelemetrySdk to AgentListener
(#4831)
- Deprecate the Tracer API
(#4868)
- Remove ConfigPropertiesAdapter as it's no longer needed
(#4888)
- Refactor
ServerSpanNaming
(in preparation for http.route
)
(#4852)
- Move SpanKey to internal package
(#4869)
Version 1.9.2 (2022-01-07)
🛠️ Bug fixes
- Fix reactor-netty memory/connection leak
(#4867)
Version 1.9.1 (2021-12-01)
🛠️ Bug fixes
- Shade class references within AWS SDK service files
(#4752)
Version 1.9.0 (2021-11-25)
📈 Enhancements
- Don't report 400 level as error for SERVER spans
(#4403)
- Netty instrumentation now captures
http.scheme
(#4446,
#4576)
- Stabilize HTTP headers capturing configuration property names
(#4459)
- Add metrics to remaining http instrumentation
(#4541)
- Remove hibernate session spans
(#4538)
- Support Jedis 4
(#4555)
- Trace DNS resolution in Netty 4.1 and reactor-netty
(#4587,
#4627)
- Update garbage collector instruments to be async counters
(#4600)
- Update HTTP metrics view to match the specification
(#4556)
- Improve Spring Integration interceptor ordering
(#4602)
- Support Restlet 2.0
(#4535)
- Improved capture of couchbase queries
(#4615)
- Trace SSL handshakes in netty 4.0 and 4.1
(#4635,
#4604)
- Capture exception on finatra controller spans
(#4669)
- Capture exception on async servlet spans
(#4677)
- Automatic AWS library instrumentor
(#4607)
- Support spring boot 2.6.0
(#4687)
🛠️ Bug fixes
- Preserve caught netty exception in the context instead of calling end()
(#4413)
- Extract net attributes both on start and on end in netty HTTP client
(#4420)
- Capture metric dimensions from end attributes also
(#4430)
- Avoid logging servlet3 muzzle failure when running on servlet2
(#4474)
- Fix JettyHttpClient9TracingInterceptor NullPointerException
(#4527)
- Fix context propagation in tomcat thread pool
(#4521)
- Add missing java.util.logging.Logger methods to PatchLogger
(#4540)
- Fix ClassCircularityError when running with security manager
(#4557)
- Fix sun.misc.Unsafe generation on Java 17
(#4558)
- Fix IndexOutOfBounds in apache http clients
(#4575)
- Fix RMI instrumentation on Java 17
(#4577)
- Fix Spring Integration instrumentation name
(#4601)
- Capture instrumentation version provided by application tracer correctly when using agent
(#4630)
- Ensure that netty 4.0 instrumentation is not applied to 4.1
(#4626)
- Fix muzzle problems happening when netty without SSL is used
(#4631)
- Fix memory leak when using ktor-client-java
(#4637)
- Fix quartz instrumentation name
(#4657)
- Fix Spring Integration context leak
(#4673)
- Fix exemplars
(#4678)
- Fix and enforce Android support
(#4671,
#4667
#4505)
🧰 Tooling
- Migrate to Spock 2
(#4458)
- Rename
newBuilder()
to builder()
(#4475)
- Sync gradle-plugins version with main project
(#4248)
- Muzzle match only once in each class loader
(#4543)
- Inject helper resources only once
(#4573)
- Improve muzzle check for constructors
(#4591)
- Add version to the InstrumenterBuilder and Instrumenter
(#4611)
- Add a ClassAndMethod class to Instrumentation API
(#4619)
- Implement a dedicated reactor-netty 1.0 instrumentation
(#4662)
- Remove gRPC dependency for export
(#4674)
- Start using Gradle Enterprise instance
(#4663)
Version 1.8.0 - Bad Release
Due to an issue in the publishing infrastructure, a bad release was published as 1.8.0. Do not use it.
Version 1.7.0 (2021-10-19)
📈 Enhancements
- Change the default javaagent artifact to have exporters, introduce new
-slim
artifact,
and deprecate the -all
artifact
(#4106)
- Support jlinked images without jdk.unsupported module
(#4154)
(#4124)
- Added experimental option to suppress messaging receive spans
(#4187)
(#4204)
- Refine 404 handling in Restlet instrumentation
(#4206)
- Remove dynamo db.name attribute
(#4208)
- Remove capturing http.url in server instrumentation in favor of http.scheme, http.host
and http.target
(#4209)
- Intern db info to reduce memory consumption
(#4263)
- Better JAX-RS async cancel handling
(#4279)
- Extract HTTP request/response headers as span attributes
(#4237,
#4309,
#4320,
#4321,
#4328,
#4395)
- Support kafka streams 3
(#4236)
- AWS lambda - improvements in custom type handling in wrappers, SQS event wrapper added
(#4254)
- Add code attributes to quartz spans
(#4332)
- Collect more attributes from servlet instrumenter
(#4356)
- Allow reactor instrumentation to pick up spans from reactor context
(#4159)
- Hide virtual field accessor interface methods from reflection
(#4390)
🛠️ Bug fixes
- Fix spring context reload issue
(#4051)
- Remove incorrect lettuce db.statement attribute
(#4160)
- Fix tomcat async spans
(#4339)
🧰 Tooling
- Add start/end time to RequestListener
(#4155)
- Add context customizer hook to Instrumenter API
(#4167)
- Transform lambda classes
(#4182)
- Separate HTTP client/server AttributesExtractors
(#4195)
- Introduce muzzle-specific interface to InstrumentationModule
(#4207)
- Make it possible to use InstrumentationContext (now VirtualField) from library instrumentation
(#4218)
- Add functionality to generate API changes
(#4285)
- Split NetAttributesExtractor into NetClientAttributesExtractor and NetServerAttributesExtractor
(#4287)
- Back VirtualField with a volatile field
(#4355)
- Convert AttributesExtractor to interface
(#4363)
- Rename some
*InstrumenterBuilder
classes to *InstrumenterFactory
(#4391)
- rename
newBuilder()
to builder()
(#4407)
Version 1.6.2 (2021-09-30)
🛠️ Bug fixes
- The 1.6.1 patch release was not backwards compatible with javaagent extensions built against 1.6.0
(#4245)
Version 1.6.1 (2021-09-29)
🛠️ Bug fixes
- Fix possible JDBC instrumentation deadlock
(#4191)
Version 1.6.0 (2021-09-18)
🌟 New javaagent instrumentation
- Add instrumentation for Quartz 2.0
(#4017)
- Restlet instrumentation
(#3946)
🌟 New library instrumentation
- Add instrumentation for Quartz 2.0
(#4017)
- Restlet instrumentation
(#3946)
📈 Enhancements
- Extract Jedis 3 net attributes from InetSocketAddress
(#3912)
- Add option to suppress controller and view spans
(#3865)
- Capture http.user_agent for AsyncHttpClient
(#3930)
- Instrument spring-kafka batch message listeners
(#3922)
- Use unsafe to inject classes to the bootstrap class loader
(#4026)
- Some performance optimizations
(#4004,
#4006,
#4008,
#4013,
#4014)
- Do not fallback to net attributes for http.client_ip
(#4063)
- Start a CONSUMER span for Kafka poll()
(#4041)
- Support otlp http exporter
(#4068)
- Better grpc events
(#4098)
🛠️ Bug fixes
- Bridge span keys defined in instrumentation-api
(#3911)
- Hide generated fields and methods from reflection
(#3948)
- Remove invalid message header
(#3958)
- Fix memleak in the Netty ChannelPipeline instrumentation
(#4053)
- Fix grpc instrumentation of callbacks
(#4097)
- Bridge trace builder
(#4090)
- Remove original handler when removelast in netty
(#4123)
🧰 Tooling
- Deprecate old extensions
(#3825)
- Add request parameter to EndTimeExtractor
(#3947)
- Make Config behave exactly as SDK DefaultConfigProperties
(#4035)
- Fix extension shading
(#4064)
- Add error parameter to EndTimeExtractor and AttributesExtractor#onEnd()
(#3988)
- Allow adding multiple ContextStore fields to one key class
(#4067,
#4084,
#4110)
Version 1.5.3 (2021-08-31)
🛠️ Bug fixes
- Fix parsing of unclean map values in Config
(#4032)
Version 1.5.2 (2021-08-27)
🛠️ Bug fixes
- Fix unbounded metrics cardinality, which in particular causes memory leak when not using any
metrics exporter
(#3972)
Version 1.5.1 (2021-08-25)
🛠️ Bug fixes
- Fix broken Android level 21-25 support in OkHttp 3 library instrumentation
(#3910)
- Fix maven central pom file for the opentelemetry-javaagent artifact
(#3929)
- Fix maven central pom file for the opentelemetry-agent-for-testing artifact
(#3935)
Version 1.5.0 (2021-08-22)
🌟 New library instrumentation
- Library instrumentation for Apache HTTP Client 4.3
(#3623)
- Library instrumentation for Ratpack server
(#3749)
📈 Enhancements
- Support Couchbase 3.2.0
(#3645)
- Handle port and IPv6 in forwarded headers
(#3651)
- Set real Hibernate span name on method entry to help samplers
(#3603)
- Reduce overhead of unsampled requests
(#3681)
- Sanitize SQL in Apache Camel instrumentation
(#3683,
#3717)
- Add option to create span on new netty connection
(#3707)
- Propagate context into jdk http client callback
(#3719)
- Instrument Tomcat executor to support async servlets in new Tomcat 9.0.52 release
(#3789)
- Add otlp-logging exporter
(#3807)
- Add new option to support capturing nested client spans of different types
(#3691)
- Propagate context to lettuce callbacks
(#3839)
- Instrument ForkJoinTask.fork()
(#3849)
- Implement a Call.Factory for okhttp 3.x+ library instrumentation
(#3812)
- Record exception in Dubbo instrumentation
(#3851)
- Propagate context to elasticsearch callbacks
(#3858,
#3861)
- Added Vertx http client 4 instrumentation
(#3665)
- Make empty agent bridged context equal root context
(#3869)
🛠️ Bug fixes
- Fix OkHttp 3 correlation when using callback under concurrency
(#3669,
#3676)
- Fix Netty span not captured on read timeout
(#3613)
- Fix Netty connection failure handling when listener is lambda
(#3569)
- Fix NullPointerException in Apache HttpAsyncClient instrumentation
(#3692)
- Fix NullPointerException in Tomcat instrumentation
(#3705)
- Fix Apache HttpClient telemetry when host and absolute URI are used
(#3694)
- Fix JDK http client should propagate even when sampled out
(#3736)
- Limit netty exception capture to netty spans
(#3809)
- Fix jetty httpclient returning empty response when instrumented
(#3831,
#3833)
- Don't clobber user decorators in Armeria client instrumentation
(#3873)
- Use valid Java identifiers for message keys
(#3863)
- Fix ClassNotFoundException: HandlerMappingResourceNameFilter in some ear deployments
(#3718)
🧰 Tooling
- Improve extension sample documentation and add it to the README file
(#3656)
- Extract muzzle check plugin
(#3657)
- Move instrumentation specific classes out of javaagent-instrumentation-api
(#3604)
- Publish muzzle plugins to Gradle Plugin Portal
(#3720,
#3763)
- Fill
http.client_ip
in ServerInstrumenter
(#3756)
- Fix printMuzzleReferences gradle task
(#3808)
- Introduce stable property for external extensions
(#3823)
- Run tests on j9 JVM during CI
(#3764)
- Support looking up a ContextStore from outside of Advice
(#3827)
- Deprecate MetricExporterFactory
(#3862)
- Don't pass configuration to SDK autoconfigure through system props
(#3866)
- Rename Config get*Property() methods to get*()
(#3881)
Version 1.4.0 (2021-07-20)
☢️ Behavioral changes
- Updated all instrumentation names to
io.opentelemetry.{libName}-{libVersion}
(#3411)
- Updated RabbitMQ to follow semantic conventions
(#3425)
🌟 New javaagent instrumentation
- Jetty 9 HTTP client instrumentation
(#3079)
🌟 New library instrumentation
- Jetty 9 HTTP client instrumentation
(#3079)
- Jdbc instrumentation
(#3367)
📈 Enhancements
- Make @RabbitListener propagate context properly
(#3339)
- Add peer.service to grpc javaagent instrumentation
(#3357)
- Propagate context to cassandra4 callbacks
(#3371)
- Update Armeria instrumentation to support new Armeria 1.9.0 release
(#3407)
- Context propagation for ratpack Execution.fork()
(#3416)
🛠️ Bug fixes
- Fix Kafka stream instrumentation to support Kafka 2.6 and above
(#3438)
- Fix Dubbo trace/span cross-process propagation
(#3442)
- Fix
peer.service
configuration mapping
(#3378)
🧰 Tooling
- Hide Config#create() method and use builder everywhere
(#3338)
- Ignore task classes using IgnoredTypesConfigurer
(#3380)
- Exclude duplicate classes from final jars
(#3432,
#3430)
- Port AsyncSpanEndStrategy to Instrumenter API
(#3262)
- Rename
opentelemetry-javaagent-api
artifact to opentelemetry-javaagent-instrumentation-api
(#3513)
Version 1.3.1 (2021-06-23)
🛠️ Bug fixes
- Fix incorrect dependency in published BOM
(#3376)
- Fix UnsupportedOperationException with reactor-rabbitmq
(#3381)
- Fix Spring JMS not being instrumented
(#3359)
Version 1.3.0 (2021-06-17)
☢️ Behavioral changes
- Update agent logger prefix
(#3007)
- Remove khttp instrumentation
(#3087)
- Enable akka actor instrumentation by default
(#3173)
🌟 New javaagent instrumentation
- Spring Integration javaagent instrumentation
(#3295)
🌟 New library instrumentation
- Spring Integration library instrumentation
(#3120)
📈 Enhancements
- Support peer-service-mapping in OkHttp3 instrumentation
(#3063)
- Low cardinality span names for Hibernate spans
(#3106)
- Propagate context to armeria callbacks
(#3108)
- Add attributes to netty connection failure span
(#3115)
- Defer initialization of OpenTelemetry in spring-boot-autoconfigure
(#3171)
- Support couchbase 3.1.6
(#3194)
- New experimental support for agent extensions
(#2881,
#3071,
#3226,
#3237)
- Propagate context to akka http callbacks
(#3263)
🛠️ Bug fixes
- Remove Netty instrumented handler wrapper when original handler is removed
(#3026)
- Fix memory leak when Netty handler is a lambda
(#3059)
- Fix race condition on Undertow
(#2992)
- Remove db.connection_string from redis instrumentation
(#3094)
- Fix context propagation leak in Akka instrumentation
(#3099)
- Fix webflux handler span sporadically not ending
(#3150)
- End span on cancellation of subscription to reactive publishers
(#3153)
- End span on cancellation of Guava future
(#3175)
- Create Netty connection failure span only when first operation fails
(#3228)
- Internal instrumentation should always be enabled by default
(#3257)
- Fix context propagation leak in Akka HTTP instrumentation
(#3264)
- Only include exporters in the
-all
jar
(#3286)
- Fix ForkJoinPool sometimes not instrumented
(#3293)
🧰 Tooling
- Migrate MuzzlePlugin to Java
(#2996,
#3017)
- Refactor TypeInstrumentation#transformers() method
(#3019)
- Change a couple of Longs to Integers in Instrumenter API
(#3043)
- Add peer.service to Instrumenter API
(#3050)
- Add response type parameter to db attributes extractor
(#3093)
- Add optimized Attributes implementation for Instrumenter
(#3136)
- Rename ComponentInstaller to AgentListener and add #order() method
(#3182)
- Update ByteBuddy
(#3254)
- Introduce IgnoredTypesConfigurer SPI to enable defining per-module ignores
(#3219)
- Extract agent shadow configuration to conventions script
(#3256)
- Deprecate SpanExporterFactory in favor of ConfigurableSpanExporterProvider
(#3299)
- Refactor span names class
(#3281)
- Move http client/server testing dependencies to internal package
(#3305)
Version 1.2.0 (2021-05-14)
☢️ Behavioral changes
- AWS lambda flush timeout raised to 10 seconds
(#2855)
SERVER
span names improved for Spring MVC, Grails, Wicket, and Struts
(#2814)
SERVER
span names improved for Servlet filters
(#2887)
SERVER
span names improved for Resteasy
(#2900)
SERVER
span names improved for Jersey and CXF
(#2919)
- JAX-RS
@ApplicationPath
annotation captured as part of SERVER
span name
(#2824)
- RequestDispatcher
forward()
and include()
internal spans removed
(#2816)
- Raised gRPC min version supported to 1.6 in order to use new gRPC context bridge API
(#2948)
🌟 New javaagent instrumentation
🌟 New library instrumentation
📈 Enhancements
- Support sub-millisecond precision for start/end times on Java 9+
(#2600)
@WithSpan
async support added for methods returning async Reactor 3.x types
(#2714)
@WithSpan
async support added for methods returning Guava ListenableFuture
(#2811)
- Semantic attributes
code.namespace
and code.function
captured on JAX-RS internal spans
(#2805)
- Context propagated to reactor-netty callbacks
(#2850)
🛠️ Bug fixes
- gRPC context bridging issues
(#2564,
#2959)
- URL credentials of the form
https://username:password@www.example.com/
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)