This website works better with JavaScript
Changelog
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 )