github open-telemetry/opentelemetry-java-instrumentation v1.2.0
Version 1.2.0

latest releases: v1.33.2, v2.3.0, v1.33.1...
2 years ago

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

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

☢️ 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)

🛠️ 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.

🙇 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

Don't miss a new opentelemetry-java-instrumentation release

NewReleases is sending notifications on new releases.