OpenTelemetry - CNCF/opentelemetry-java-instrumentation: Release v1.2.0
Name: opentelemetry-java-instrumentation
Owner: OpenTelemetry - CNCF
Release: Version 1.2.0
Released: 2021-05-14
License: Apache-2.0
Release Assets:
This release requires the use of OpenTelemetry Java SDK 1.2.0.
Note that all artifacts other than io.opentelemetry.javaagent:opentelemetry-javaagent have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.
🌟 New javaagent instrumentation
- RxJava 3 (#2794)
🌟 New library instrumentation
- RxJava 3 (#2794)
📈 Enhancements
- Support sub-millisecond precision for start/end times on Java 9+ (#2600)
@WithSpanasync support added for methods returning async Reactor 3.x types (#2714)@WithSpanasync support added for methods returning Guava ListenableFuture (#2811)- Semantic attributes
code.namespaceandcode.functioncaptured on JAX-RS internal spans (#2805) - Context propagated to reactor-netty callbacks (#2850)
☢️ Behavioral changes
- AWS lambda flush timeout raised to 10 seconds (#2855)
SERVERspan names improved for Spring MVC, Grails, Wicket, and Struts (#2814)SERVERspan names improved for Servlet filters (#2887)SERVERspan names improved for Resteasy (#2900)SERVERspan names improved for Jersey and CXF (#2919)- JAX-RS
@ApplicationPathannotation captured as part ofSERVERspan name (#2824) - RequestDispatcher
forward()andinclude()internal spans removed (#2816) - Raised gRPC min version supported to 1.6 in order to use new gRPC context bridge API (#2948)
🛠️ 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-toolingmodule to implement custom instrumentations: a newjavaagent-extension-apimodule was introduced, containing all the necessary instrumentation classes and interfaces; InstrumentationModuleandTypeInstrumentationwere moved to theio.opentelemetry.javaagent.extension.instrumentationpackage;AgentElementMatchers,ClassLoaderMatcherandNameMatcherswere moved to theio.opentelemetry.javaagent.extension.matcherpackage;- A new SPI
AgentExtensionwas introduced: it replacesByteBuddyAgentCustomizer; InstrumentationModule#getOrder()was renamed toorder();InstrumentationModule#additionalHelperClassNames()has been removed; useisHelperClass(String)instead if you use the muzzle compile plugin. If you're not using muzzle, you can overridegetMuzzleHelperClassNames()directly instead;InstrumentationModule#getAllHelperClassNames()has been removed; you can callgetMuzzleHelperClassNames()to retrieve all helper class names instead.
- You no longer have to depend on the
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@agoallikmaa @ankitgaur-cer @anuraaga @asarkar @breedx-splk @denis111 @dkulig @fuleow @HaloFour @Hangzhi @iNikem @jguerra @jkwatson @kubawach @laurit @mateuszrzeszutek @necrolyte2 @pavolloffay @pellared @raptium @richardstartin @RSoodAMAT @ryanrupp @skoppers @trask @tydhot @tylerbenson