github open-telemetry/opentelemetry-java-instrumentation v0.17.0
Version 0.17.0

latest releases: v2.8.0, v1.33.6, v2.7.0...
3 years ago

This update requires the use of OpenTelemetry Java SDK 0.17.0 or 0.17.1. There are many breaking changes in the API so if you manually trace using the API, you should carefully go through the release notes to see what needs to be updated.

If you use library instrumentation, you will want to take advantage of our shiny new BOM that we now publish to manage versions of io.opentelemetry.instrumentation and io.opentelemetry at io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:0.17.0-alpha. This means you do not want to use the SDK's BOM, io.opentelemetry:opentelemetry-bom - our BOM includes a compatible version so you don't have to worry about it.

Note that all artifacts other than io.opentelemetry.javaagent:javaagent have had the -alpha suffix attached to their version number to reflect the fact that we plan on releasing the javaagent as a stable artifact next month - all other artifacts will still be alpha quality and have continuing breaking changes.

🌟 New instrumentation

  • RxJava2 instrumentation (library only for now) #2191
  • Apache HTTPClient 5 #2254
  • Runtime metrics for JVM enabled by javaagent #2311

📈 Improvements

  • Some extraneous libraries have been removed from the agent package #2238 #2251 #2288
  • The agent does not register an extraneous shutdown hook which is now managed by the SDK #2283
  • Context is propagated to apache httpclient async callback #2276
  • When agent debug is enabled, spans are also logged to standard out #2270
  • Possibly minor startup performance improvement by avoiding String.format #2309
  • Metric collected for when we suppress nested spans #2135
  • MongoDB span names follow specification #2307
  • More jetty handlers are instrumented #2320

🛠️ Bug fixes

  • AWS Lambda instrumentation will now propagate from HTTP headers if X-Ray is disabled #2222
  • Apache Camel instrumentation will not throw an NPE in app code when SQS propagation is not enabled #2250
  • Prometheus collector's required HTTP dependency is restored #2259
  • gRPC client instrumentation does not squash exceptions thrown in client message handlers #2294
  • App server context name is correctly set for managed app servers #2089
  • HttpUrlConnection exceptions correctly set status code #2272

🧰 Tooling

  • Smoke tests are faster by only starting shared containers once #2249
  • A license report of all dependencies bundled into the agent is now also bundled in #2239 #2261 #2278
  • Tracers now return context instead of spans #2232
  • Downstream instrumentation tests can now be written in java with junit5 using our new extensions #2241
  • In general, the testing framework now makes less assumptions and should support wider use cases, for example ClassRule #2265
  • Library instrumentation can now use HttpServerTest and HttpClientTest abstractions #2299
  • Less chance (no chance?) of deadlock in builds due to logging race conditions #2236
  • JDK does not need to be in the PATH to run the build #2322

☢️ Breaking changes

  • Logging injection now sets fields trace_id, span_id, and trace_flags, instead of traceId, spanId, and sampled
  • AWS Lambda instrumentation now requires an OpenTelemetrySdk to be provided for initialization of non-wrappers. Wrappers use opentelemetry-sdk-extension-autoconfigure similar to the javaagent. #2328

🙇 Thank you

This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:

@agoallikmaa
@anuraaga
@breedx-splk
@iNikem
@jamal
@jkwatson
@kubawach
@laurit
@Oberon00
@mateuszrzeszutek
@trask

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

NewReleases is sending notifications on new releases.