Skip to content

Releases: open-telemetry/opentelemetry-java

Version 1.0.0

26 Feb 20:25
6dd3eac
Compare
Choose a tag to compare

Version 1.0.0 - 2021-02-26

General

This releases marks the first stable release for the tracing, baggage and context APIs and the SDK.
Please see the Versioning document for stability guarantees.

The best source of a list of the now stable packages can be found in the opentelemetry-bom artifact in maven central.

Javadoc is available at javadoc.io. For example, javadoc.io for the API module.

Changes

  • The opentelemetry-proto module is now versioned as an alpha module, as it contains non-stable
    metrics and logs signals. It has hence been removed from the main BOM.
  • The opentelemetry-sdk-extension-otproto module has been removed. The classes in it have been moved
    to a new opentelemetry-exporter-otlp-common module but have been repackaged into an unsupported,
    internal package.

Metrics (alpha)

Breaking Changes

  • PrometheusCollector.Builder inner class has been moved to the top level as PrometheusCollectorBuilder.

Many thanks to all the people who have contributed over the past few years! We couldn't have done without everyone's help.

contributors

Version 0.17.1 (RC)

19 Feb 06:47
Compare
Choose a tag to compare

This release addresses a minor issue where the old ResourceProvider class before moving to the autoconfigure module had not been deleted, so if you have a custom ResourceProvider, you would not get the intended compilation failure while your attributes would not actually be reflected.

There is no other difference or any change in behavior - if you are already using 0.17.0 you do not need to update.

Version 0.17.0 (RC)

18 Feb 05:10
0eb4fb2
Compare
Choose a tag to compare

0.17.0 is planned to be the final release before 1.0.0. Due to some confusion, we have consistently wavered on the goal of API stability and apologize for it. All maintainers are committed to making sure there are no further breaking changes unless a critical user facing bug or security issue is found. This is it. If you have trouble updating any code, let us know - if it's open source we can even make the change.

General

Note: In an effort to accelerate our work toward a 1.0.0 release, we have skipped the deprecation phase
on a number of breaking changes. We apologize for the inconvenience this may have caused. We are very
aware that these changes will impact users. If you need assistance in migrating from previous releases,
please open a discussion topic at
https://github.com/open-telemetry/opentelemetry-java/discussions.

Many classes have been made final that previously were not. Please reach out if you have a need to
provide extended functionality, and we can figure out how best to solve your use-case.

API

☢️Breaking Changes

  • TraceStateBuilder.set(String, String) has been renamed to TraceStateBuilder.put(String, String).
  • BaggageBuilder.setParent() and BaggageBuilder.setNoParent() have been removed from the Baggage APIs.
    In addition, Baggage will no longer be implicitly generated from Baggage that is in the current context. You now must explicitly
    get the Baggage instance from the Context and call toBuilder() on it in order to get the entries pre-populated in your builder.
  • TextMapPropagator.Setter and TextMapPropagator.Getter have been moved to the top level and renamed to
    TextMapSetter and TextMapGetter respectively.
  • OpenTelemetry.getDefault() has been renamed to OpenTelemetry.noop().
  • OpenTelemetry.getPropagating() has been renamed to OpenTelemetry.propagating().
  • TracerProvider.getDefault() has been renamed to TracerProvider.noop()
  • Tracer.getDefault() has been removed.
  • TraceId.getTraceIdRandomPart(CharSequence) has been removed.
  • The B3Propagator.getInstance() has been renamed to B3Propagator.injectingSingleHeader().
  • The B3Propagator.builder() method has been removed. As a replacement, you can use B3Propagator.injectingMultiHeaders() directly.

SDK

☢️Breaking Changes

  • The SPI for configuring Resource auto-populators has been removed from the SDK and moved to the opentelemetry-sdk-extension-autoconfigure module.
    This means that Resource.getDefault() will no longer be populated via SPI, but only include the bare minimum values from the SDK itself.
    In order to get the auto-configured Resource attributes, you will need to use the opentelemetry-sdk-extension-autoconfigure module directly.
  • InstrumentationLibraryInfo.getEmpty() has been renamed to InstrumentationLibraryInfo.empty().
  • Resource.getEmpty() has been renamed to Resource.empty().
  • When specifying the endpoints for grpc-based exporters, you now are required to specify the protocol. Hence, you must include
    the http:// or https:// in front of your endpoint.
  • The option on SpanLimits to truncate String-valued Span attributes has been removed (this is still pending in the specification).
  • The InMemoryMetricsExporter has been removed from the opentelemetry-sdk-testing module.

🌟Miscellaneous

  • The default values for SpanLimits have been changed to 128, from 1000, to match the spec.

Extensions

☢️Breaking Changes

  • In the opentelemetry-sdk-extension-autoconfigure module, we have changed the system property used to exclude some Resource auto-populators to be
    otel.java.disabled.resource-providers instead of otel.java.disabled.resource_providers.
  • In the opentelemetry-sdk-extension-autoconfigure module, you now specify the OtTracePropagator with the "ottrace" option, rather than "ottracer".
  • In the opentelemetry-sdk-extension-autoconfigure module, the default exporters are now set to be "otlp", as required by the 1.0.0 specification.
  • In the opentelemetry-sdk-extension-autoconfigure module, the default propagators are now set to be "tracecontext,baggage", as required by the 1.0.0 specification.
  • The CommonProperties class has been removed from the opentelemetry-sdk-extension-otproto module.

Metrics (alpha)

☢️API

  • Meter.getDefault() has been removed.
  • MeterProvider.getDefault() has been renamed to MeterProvider.noop().

Version 0.16.0 (RC)

09 Feb 04:54
044ac9d
Compare
Choose a tag to compare

0.16.0 is planned to be the final release before 1.0.0. It is a release candidate and reflects our final API, no further breaking changes will be made unless a critical user-facing bug or security issue is found.

This release contains final cleanups of the API - apologies for any needed updates but this is it.

General

Note: In an effort to accelerate our work toward a 1.0.0 release, we have skipped the deprecation phase
on a number of breaking changes. We apologize for the inconvenience this may have caused. We are very
aware that these changes will impact users. If you need assistance in migrating from previous releases,
please open a discussion topic at
https://github.com/opentelemetry/opentelemetry-java/discussions.

☢️ Breaking Changes

  • Methods and classes deprecated in 0.15.0 have been removed.

API

☢️Breaking Changes

  • The Span.Kind enum has been moved to the top level, and named SpanKind.
  • DefaultOpenTelemetry is no longer a public class. If you need the functionality previously provided by this
    implementation, it can be accessed via new static methods on the OpenTelemetry interface itself.
  • The TraceFlags interface has been re-introduced. This is now used, rather than a bare byte wherever
    trace flags is used. In particular, SpanContext.create(), SpanContext.createFromRemoteParent() now require
    a TraceFlags instance, and SpanContext.getTraceFlags() returns a TraceFlags instance.
  • The names of static methods on TraceFlags have been normalized to match other similar classes, and now
    return TraceFlags instead of byte where appropriate.
  • The Labels interface and related classes have been moved into the alpha metrics modules and repackaged.
  • TraceId.copyHexInto(byte[] traceId, char[] dest, int destOffset) has been removed.
  • SpanContext.getTraceIdAsHexString() has been renamed to SpanContext.getTraceId()
  • SpanContext.getSpanIdAsHexString() has been renamed to SpanContext.getSpanId()
  • BaggageEntry.getEntryMetadata() has been renamed to BaggageEntry.getMetadata()
  • BaggageConsumer has been removed in favor of a standard java.util.function.BiConsumer<String, BaggageEntry>
  • TraceFlags.isSampledFromHex(CharSequence src, int srcOffset) has been removed.
  • SpanId and TraceId methods that had a String parameter now accept CharSequence
    and assume the id starts at the beginning.
  • SpanId.getSize() and TraceId.getSize() have been removed.
  • SpanId.bytesFromHex() has been removed.
  • SpanId.asLong(CharSequence) has been removed.
  • SpanId.asBytes(CharSequence) has been removed.
  • SpanId.getHexLength() has been renamed to SpanId.getLength()
  • SpanId.bytesToHex() has been renamed to SpanId.fromBytes()
  • TraceId.bytesFromHex() has been removed.
  • TraceId.traceIdLowBytesAsLong(CharSequence) has been removed.
  • TraceId.traceIdHighBytesAsLong(CharSequence) has been removed.
  • TraceId.asBytes(CharSequence) has been removed.
  • TraceId.getHexLength() has been renamed to TraceId.getLength()
  • TraceId.bytesToHex() has been renamed to TraceId.fromBytes()
  • StrictContextStorage has been made private. Use -Dio.opentelemetry.context.enableStrictContext=true` to enable it

📈Enhancements

  • The W3CTraceContextPropagator class now directly implements the TextMapPropagator interface.
  • The OpenTelemetry interface now has a getDefault() method which will return a completely no-op implementation.
  • The OpenTelmmetry interface now has a getPropagating(ContextPropagators propagators) method which will
    return an implementation that contains propagators, but is otherwise no-op.

🌟Misc Notes

  • The internal StringUtils class has had metrics-related methods removed from it. But, you weren't using
    internal classes, were you?
  • The internal AbstractWeakConcurrentMap class has been made non-public. See the line above about internal classes.

Extensions

☢️ Breaking Changes

  • The OtTracerPropagator has been renamed to OtTracePropagator in the trace-propagators extension module.
  • AwsXrayPropagator has been moved to the opentelemetry-extension-aws artifact

SDK

☢️ Breaking Changes

  • TraceConfig has been renamed to SpanLimits and relocated to the io.opentelemetry.sdk.tracing package.
    All related method names have been renamed to match.
  • SpanData.getTraceState() has been removed. The TraceState is still available via the SpanContext accessor.
  • SpanData.isSampled() has been removed. The isSampled property is still available via the SpanContext accessor.

📈Enhancements

  • SpanData now directly exposes the underlying SpanContext instance.

SDK Extensions

☢️Breaking Changes

  • In the opentelemetry-autoconfigure module, three environment variables/system properties
    have been renamed to match the spec:
    • OTEL_TRACE_EXPORTER/otel.trace.exporter has been replaced with OTEL_TRACES_EXPORTER/otel.traces.exporter
    • OTEL_TRACE_SAMPLER/otel.trace.sampler has been replaced with OTEL_TRACES_SAMPLER/otel_traces_sampler
    • OTEL_TRACE_SAMPLER_ARG/otel.trace.sampler.arg has been replaced with OTEL_TRACES_SAMPLER_ARG/otel.traces.sampler.arg

📈Enhancements

  • The opentelemetry-autoconfigure module now supports using non-millisecond values for duration &
    interval configuration options. See the javadoc on the io.opentelemetry.sdk.autoconfigure.ConfigProperties.getDuration(String)
    method for details on supported formats.
  • The opentelemetry-autoconfigure module now provides automatic SPI-based parsing of the OTEL_RESOURCE_ATTRIBUTES env var
    (and the corresponding otel.resource.attributes system property). If you include this module on your
    classpath, it will automatically update the Resource.getDefault() instance with that configuration.

Metrics (alpha)

API

  • The Labels interface has been moved into the metrics API module and repackaged into the
    io.opentelemetry.api.metrics.common package.

Version 0.15.0 (RC)

29 Jan 05:03
3c23750
Compare
Choose a tag to compare

0.15.0 is planned to be the final release before 1.0.0. It is a release candidate and should mostly reflect our final API.

General

☢️ Breaking Changes

  • Methods and classes deprecated in 0.14.x have been removed.

🌟 Miscellaneous

  • The opentelemetry-semconv module has been marked as -alpha and removed from the bom. This was done because the OpenTelemetry project has not decided on a specification for stability of semantic conventions or the specific telemetry produced by
    instrumentation.
  • The items in the io.opentelemetry.semconv.trace.attributes.SemanticAttributes which were previously
    generated form the Resource semantic conventions have been deprecated. Please use the ones in the new
    io.opentelemetry.semconv.resource.attributes.ResourceAttributes class.

📈 Enhancements

  • A new io.opentelemetry.semconv.resource.attributes.ResourceAttributes has been introduced to hold the
    generated semantic attributes to be used in creating Resources.

🌟 Miscellaneous

  • The SemanticAttributes class has been moved to a new module: opentelemetry-semconv and repackaged into a new package:
    io.opentelemetry.semconv.trace.attributes. The old SemanticAttributes class will be removed in the next release.
  • The SPI interfaces for OpenTelemetry have been deprecated. We are moving to a new auto-configuration approach with the
    new SDK auto-configuration module: io.opentelemetry.sdk.autoconfigure. This module should be considered the officially
    supported auto-configuration library moving forward.

SDK

🛠️ Bugfixes:

  • The Jaeger exporters will now properly populate the process service name from the Resource service.name attribute.

☢️ Breaking Changes

  • SamplingResult.Decision has been removed in favor of the io.opentelemetry.sdk.trace.samplers.SamplingDecision top-level class.
  • Resource.merge(Resource) now will resolve conflicts by preferring the Resource passed in, rather than the original.
  • The default Resource (accessible via Resource.getDefault()) now includes a fallback service.name attribute. The implication
    of this is that exporters that have configured fallback service names will only use them if the SDK is intentionally
    configured with a Resource that does not utilize the default Resource for its underlying Resource data.
  • The Sampler is now specified when building the SdkTracerProvider directly, rather than being a part of the TraceConfig.

📈 Enhancements

  • Resource.getDefault() now includes a fallback service.name attribute. Exporters that require a service.name
    should acquire the fallback from the default resource, rather than having it configured in.

🌟 Miscellaneous

  • Going forward, OTLP exporter endpoint specifications must include a scheme, either http:// or https://.
    We will support endpoints without schemes until the next release, at which point not providing a scheme will generate
    an error when trying to use them. This applies to the use of system properties, environment variables, or programmatic
    specifications of the endpoints.
  • The exportOnlySampled configuration of the BatchSpanProcessor has been deprecated and will be removed in the next
    release.
  • The io.opentelemetry.sdk.resources.ResourceAttributes has been deprecated and will be removed in the next release.
    Please use the new io.opentelemetry.semconv.resource.attributes.ResourceAttributes class in the opentelemetry-semconv
    module.
  • The serviceName configuration option for the Jaeger and Zipkin exporters has been deprecated. In the next release, those
    configuration options will be removed, and the fallback service.name will always be pulled from the default Resource.

Extensions

☢️ Breaking Changes

  • The otel.bsp.schedule.delay.millis env var/system property configuration option for the batch span processor has been renamed to
    otel.bsp.schedule.delay to match the specification.
  • The otel.bsp.export.timeout.millis env var/system property configuration option for the batch span processor has been renamed to
    otel.bsp.export.timeout to match the specification.

📈 Enhancements

  • The opentelemetry-sdk-extension-autoconfigure module will now additionally register the auto-configured
    SDK as the instance of GlobalOpenTelemetry when used.
  • The opentelemetry-sdk-extension-autoconfigure module now supports the otel.exporter.otlp.certificate configuration
    property for specifying a path to a trusted certificate for the OTLP exporters.

Version 0.14.1

13 Jan 19:13
Compare
Choose a tag to compare

Release notes

This patch release fixes the publishing of the opentelemetry-bom artifact, which was mis-published in v0.14.0

For details about what was changed from 0.13.1, please see the release notes for 0.14.0.

Version 0.14.0

13 Jan 08:17
86cd564
Compare
Choose a tag to compare

Note : This release has been superceded by 0.14.1

This release had issues with publishing the opentelemetry-bom to maven central. This was addressed in v0.14.1.

General

  • Several more modules have been updated to have -alpha appended on their versions:
    • opentelemetry-sdk-extension-jfr-events
    • opentelemetry-sdk-extension-async-processor
    • opentelemetry-sdk-extension-logging
    • opentelemetry-sdk-extension-zpages
    • opentelemetry-sdk-exporter-prometheus
    • opentelemetry-sdk-exporter-tracing-incubator
    • opentelemetry-opentracing-shim
    • opentelemetry-opencensus-shim

API

☢️ Breaking Changes

  • Code that was deprecated in 0.13.0 has been removed from the project.
    • Metrics interfaces are no longer available as a part of the opentelemetry-pom or from the opentelemetry-api modules.
      To access the alpha metrics APIs, you will need to explicitly add them as a dependency.
    • OpenTelemetry.setPropagators() has been removed. You should instead create your
      OpenTelemetry implementations with the Propagators preset, via the various builder options. For example, use
      DefaultOpenTelemetry.builder().setPropagators(propagators).build() to configure your no-sdk implementation.
    • The OpenTelemetry.builder() and the OpenTelemetryBuilder interface have been removed.
      The builder functionality is now only present on individual implementations of OpenTelemetry. For instance, the
      DefaultOpenTelemetry class has a builder available.

📈 Enhancements

  • The SemanticAttributes have been updated to the latest version of the specification, as of January 7th, 2021.

🌟 Miscellaneous

  • The SemanticAttributes class has been moved to a new module: opentelemetry-semconv and repackaged into a new package:
    io.opentelemetry.semconv.trace.attributes. The old SemanticAttributes class will be removed in the next release.
  • The SPI interfaces for OpenTelemetry have been deprecated. We are moving to a new auto-configuration approach with the
    new SDK auto-configuration module: io.opentelemetry.sdk.autoconfigure. This module should be considered the officially
    supported auto-configuration library moving forward.

SDK

🛠️ Bugfixes:

  • Environment variables/system properties that are used to set extra headers for the OTLP exporters have been fixed to now
    split on commas, rather than semicolons. This has been brought in line with the specification for these environment
    variables. This includes otel.exporter.otlp.span.headers, otel.exporter.otlp.metric.headers, and otel.exporter.otlp.headers.
  • Passing a null span name when creating a span will no longer cause a NullPointerException. Instead, a default span name will be
    provided in place of the missing name.

☢️ Breaking Changes

  • The deprecated SpanData.Link.getContext() method has been removed in favor of SpanData.Link.getSpanContext().
  • The TracerProviderFactorySdk SPI class has been renamed to SdkTracerProviderFactory.
  • The OpenTelemetrySdkBuilder.build() method has been renamed to OpenTelemetrySdkBuilder.buildAndRegisterGlobal().
    The build() method still exists, but no longer sets the instance on the GlobalOpenTelemetry when invoked.
  • The SdkTracerManagement.shutdown() method now returns CompletableResultCode which can be used to wait
    asynchronously for shutdown to complete.
  • The sampling.probability sampling attribute previously generated by the TraceIdRatioBasedSampler is no longer
    generated, as it was not conformant with the specifications.
  • Inner classes of SpanData have been moved to the top level

📈 Enhancements

  • The OtlpGrpcSpanExporter now supports setting trusted TLS certificates for secure communication with the collector.
  • A new module for supporting auto-configuration of the SDK has been added. The new module, io.opentelemetry.sdk.autoconfigure will
    be the new path for auto-configuration of the SDK, including via SPI, environment variables and system properties.
  • The TraceConfig class now exposes a builder() method directly, so you don't need to get the default then call toBuilder() on it.
  • The OTLP protobuf definitions were updated to the latest released version: 0.7.0.
    Both the Span and (alpha) Metric exporters were updated to match.
  • Timeouts in the exporters can now be specified with java.util.concurrent.TimeUnit and java.time.Duration based configurations,
    rather than requiring milliseconds.
  • Objects that can be shutdown now also implement Closeable
  • StatusData.isUnset and StatusData.isOk have been deprecated and will be removed in the following release

🌟 Miscellaneous

  • SdkTracerProvider.updateActiveTraceConfig() and SdkTracerProvider.addSpanProcessor() have been deprecated. The methods
    will be removed in the next release.
  • All existing auto-configuration mechanisms have been deprecated in favor of using the new io.opentelemetry.sdk.autoconfigure
    module. The existing ones will be removed in the next release.
  • The methods with the term "deadline" has been deprecated in the configuration of the grpc-based exporters (OTLP and Jaeger) in favor
    of the word "timeout". The deadline-named methods will be removed in the next release.
  • The StringUtils class in the opentelemetry-extension-trace-propagators extension module has been deprecated
    and will be made non-public in the next release.

Extensions

☢️ Breaking Changes

  • The ZPages extension now exposes its SpanProcessor implementation. To use it, you will need to add it to your
    SDK implementation directly, rather than it adding itself to the global SDK instance.
  • The JaegerRemoteSampler builder patterns have been changed and updated to more closely match the rest
    of the builders in the project.

🛠️ Bugfixes:

  • The JaegerRemoteSampler now uses the ParentBased sampler as the basis for any sampling that is done.

🌟 Miscellaneous

  • The AwsXrayIdGenerator constructor has been deprecated in favor of using a simple getInstance() singleton, since
    it has no state.
  • The TraceProtoUtils class in the opentelemetry-sdk-extension-otproto module has been deprecated and
    will be removed in the next release.

Version 0.13.1

17 Dec 23:11
c82646e
Compare
Choose a tag to compare

BUGFIX patch release

  • The misconfigured poms from 0.13.0 have been corrected.

Notes:

An easy way to see all the latest (non-alpha) dependencies is to examine the pom from the opentelemetry-bom module: https://search.maven.org/artifact/io.opentelemetry/opentelemetry-bom/0.13.1/pom

Version 0.13.0

17 Dec 19:13
b758014
Compare
Choose a tag to compare

KNOWN ISSUE:

This release is mostly unusable due to this issue with mis-configured pom files for the api and sdk:
#2345

We will be releasing version 0.13.1 as soon as we have a fix ready.

General

  • Starting with 0.13.0, all unstable modules (the 2 metrics modules for now) will have a -alpha appended to their
    base version numbers to make it clear they are not production ready, and will not be when we get to releasing 1.0.
    See our Rationale document for details.

API

☢️ Breaking Changes

  • The Labels.ArrayBackedLabelsBuilder class has been made non-public.
    You can still access the LabelsBuilder functionality via the Labels.builder() method.
  • Methods deprecated in the 0.12.0 release have been removed or made non-public:
    • The HttpTraceContext class has been removed.
    • The toBuilder() method on the OpenTelemetry interface has been removed.
    • The Attributes.builder(Attributes) method has been removed in favor of Attributes.toBuilder(Attributes).
    • The DefaultContextPropagators class has made non-public.
    • The TraceMultiPropagator builder has been removed in favor of a simple factory method.
    • The value() method on the StatusCode enum has been removed.
    • The Baggage EntryMetadata class has been removed in favor of the BaggageEntryMetadata interface.
    • The setCallback() method on the asynchronous metric instruments has been removed.
  • Several public classes have been made final.

📈 Enhancements

  • An asMap method has been added to the Labels interface, to expose them as a java.util.Map.
  • You can now enable strict Context verification via a system property (-Dio.opentelemetry.context.enableStrictContext=true)
    Enabling this mode will make sure that all Scopes that are created are closed, and generate log messages if they
    are not closed before being garbage collected. This mode of operation is CPU intensive, so be careful before
    enabling it in high-throughput environments that do not need this strict verification. See the javadoc on the
    io.opentelemetry.context.Context interface for details.
  • Several of the methods on the Span interface have been given default implementations.
  • The Semantic Attributes constants have been updated to the version in the yaml spec as of Dec 14, 2020.

🌟 Miscellaneous

  • The Metrics API has been deprecated in the opentelemetry-api module, in preparation for releasing a fully-stable 1.0
    version of that module. The Metrics API will be removed from the module in the next release.
  • The API has been broken into separate modules, in preparation for the 1.0 release of the tracing API.
    If you depend on the opentelemetry-api module, you should get the rest of the API modules as transitive dependencies.
  • The OpenTelemetry.builder() and the OpenTelemetryBuilder interface have been deprecated and will be removed in the next release.
    The builder functionality is now only present on individual implementations of OpenTelemetry. For instance, the
    DefaultOpenTelemetry class has a builder available.
  • The OpenTelemetry.setPropagators() has been deprecated and will be removed in the next release. You should instead create your
    OpenTelemetry implementations with the Propagators preset, via the various builder options. For example, use
    DefaultOpenTelemetry.builder().setPropagators(propagators).build() to configure your no-sdk implementation.

SDK

☢️ Breaking Changes

  • Many SDK classes have been renamed to be prefixed with Sdk rather than having Sdk being embedded in the middle of the name.
    For example, TracerSdk has been renamed to SdkTracer and TracerSdkManagement has been renamed to SdkTracerManagement.
  • The ResourcesConfig.builder() method has been made non-public.
  • The TraceConfig.Builder class has been moved to the top-level TraceConfigBuilder class.
  • The built-in exporter Builder classes have been moved to the top level, rather than inner classes. Access to the builders
    is still available via builder() methods on the exporter classes.
  • The built-in SpanProcessor Builder classes have been moved to the top level, rather than inner classes. Access to the builders
    is still available via builder() methods on the SpanProcessor implementation classes.
  • The built-in ParentBasedSampler Builder class has been moved to the top level, rather than inner classes. Access to the builder
    is still available via methods on the Sampler interface.
  • The DaemonThreadFactory class has been moved to an internal module and should not be used outside of this repository.
  • The builder class for the OpenTelemetrySdk class has been slimmed down. The configurable details have been moved into
    the specific provider builders, where they apply more specifically and obviously.
  • Many public classes have been made final.
  • The MetricExporter interface's shutdown() method now returns CompletableResultCode rather than void.
  • The OpenTelemetrySdk's builder class has been moved to the top level, rather than being an inner class. It has been renamed to
    OpenTelemetrySdkBuilder as a part of that change.
  • The OTLP exporters have been split into two separate modules, and the metrics exporter has been tagged with the -alpha version.
    If you continue to depend on the opentelemetry-exporters-otlp module, you will only get the trace exporter as a transitive dependency.

🌟 Miscellaneous

  • The SpanData.Link.getContext() method has been deprecated in favor of a new SpanData.Link.getSpanContext().
    The deprecated method will be removed in the next release of the SDK.
  • The internals of the (alpha) Metrics SDK have been significantly updated.
  • OTLP adapter classes have been moved into the opentelemetry-sdk-extension-otproto module so they can be shared across OTLP usages.
  • The zipkin exporter has been updated to have its error code handling match the spec.
  • The logging exporter's format has changed to something slightly more human-readable.

Extensions

🐛 Bugfixes

  • The opentelemetry-extension-annotations module now includes the api module as an api dependency, rather than just implementation.

☢️ Breaking Changes

  • The deprecated opentelemetry-extension-runtime-metrics module has been removed. The functionality is available in the
    opentelemetry-java-instrumentation project under a different module name.
  • The deprecated trace-utils module has been removed.
  • Several public classes have been made final.

📈 Enhancements

  • Some common OTLP adapter utilities have been moved into the opentelemetry-sdk-extension-otproto module so they can
    be shared across OTLP exporters.

Version 0.12.0

04 Dec 07:29
c03efbc
Compare
Choose a tag to compare

API

🛠️ Bugfixes

  • Usages of tracers and meters on all OpenTelemetry instances were being delegated to the global Meter and Tracer.
    This has been corrected, and all instances should have independent Tracer and Meter instances.

☢️ Breaking Changes

  • The AttributesBuilder no long accepts null values for array-valued attributes with numeric or boolean types.
  • The TextMapPropagator.fields() method now returns a Collection rather than a List.
  • Labels has been converted to an interface, from an abstract class. Its API has otherwise remained the same.
  • TraceState has been converted to an interface, from an abstract class. Its API has otherwise remained the same.
  • Attributes has been converted to an interface, from an abstract class. Its API has otherwise remained the same.
  • The ReadableAttributes interface has been removed, as it was redundant with the Attributes interface. All APIs that
    used or returned ReadableAttributes should accept or return standard Attributes implementations.
  • SpanContext has been converted to an interface, from an abstract class. Its API has otherwise remained the same.
  • The functional AttributeConsumer interface has been removed and replaced with a standard java.util.function.BiConsumer.
  • The signature of the BaggageBuilder.put(String, String, EntryMetadata entryMetadata)
    method has been changed to put(String, String, BaggageEntryMetadata)

📈 Enhancements

  • A builder() method has been added to the OpenTelemetry interface to facilitate constructing implementations.
  • An asMap() method has been added to the Attributes interface to enable conversion to a standard java.util.Map.
  • An asMap() method has been added to the Baggage interface to enable conversion to a standard java.util.Map.
  • An asMap() method has been added to the TraceState interface to enable conversion to a standard java.util.Map.
  • The Semantic Attributes constants have been updated to the version in the yaml spec as of Dec 1, 2020.

🌟 Miscellaneous

  • The HttpTraceContext class has been deprecated in favor of W3CTraceContextPropagator. HttpTraceContext will be removed in 0.13.0.
  • The toBuilder() method on the OpenTelemetry interface has been deprecated and will be removed in 0.13.0.
  • The DefaultContextPropagators class has been deprecated. Access to it will be removed in 0.13.0.
  • The TraceMultiPropagator builder has been deprecated in favor of a simple factory method. The builder will be removed in 0.13.0.
    You can access the same functionality via static methods on the ContextPropagators interface.
  • The setCallback() method on the asynchronous metric instruments has been deprecated and will be removed in 0.13.0.
    Instead, use the setCallback() method on the builder for the instruments.
  • The value() method on the StatusCode enum has been deprecated and will be removed in 0.13.0.
  • The Baggage EntryMetadata class has been deprecated in favor of the BaggageEntryMetadata interface. The class will be made non-public in 0.13.0.

Extensions

  • The opentelemetry-extension-runtime-metrics module has been deprecated. The functionality is available in the
    opentelemetry-java-instrumentation project under a different module name. The module here will be removed in 0.13.0.
  • The trace-utils module has been deprecated. If you need this module, please let us know! The module will be removed in 0.13.0.

SDK

☢️ Breaking Changes

  • The opentelemetry-sdk-tracing module has been renamed to opentelemetry-sdk-trace.
  • The default port the OTLP exporters use has been changed to 4317.
  • The deprecated SpanData.getCanonicalCode() method has been removed, along with the implementations.

📈 Enhancements

  • The OpenTelemetrySdk builder now supports the addition of SpanProcessors to the resulting SDK.
  • The OpenTelemetrySdk builder now supports the assignment of an IdGenerator to the resulting SDK.
  • The ReadableSpan interface now exposes the Span.Kind of the span.
  • The SDK no longer depends on the guava library.
  • The parent SpanContext is now exposed on the SpanData interface.

🌟 Miscellaneous

  • The toBuilder() method on the OpenTelemetrySdk class has been deprecated and will be removed in 0.13.0.
  • The MultiSpanProcessor and MultiSpanExporter have been deprecated. You can access the same functionality via
    the SpanProcessor.composite and SpanExporter.composite methods. The classes will be made non-public in 0.13.0.
  • The SpanData.hasRemoteParent() method has been deprecated and will be removed in 0.13.0. If you need this information,
    you can now call SpanData.getParentSpanContext().isRemote().
  • The default timeouts for the 2 OTLP exporters and the Jaeger exporter have been changed to 10s from 1s.

Extensions

☢️ Breaking Changes

  • The opentelemetry-sdk-extension-aws-v1-support module has been renamed to opentelemetry-sdk-extension-aws
    and the classes in it have been repackaged into the io.opentelemetry.sdk.extension.aws.* packages.

🛠️ Bugfixes:

  • The OpenTracing TracerShim now properly handles keys for context extraction in a case-insensitive manner.

📈 Enhancements

  • The opentelemetry-sdk-extension-resources now includes resource attributes for the process runtime via the ProcessRuntimeResource class.
    This is included in the Resource SPI implementation that the module provides.
  • The opentelemetry-sdk-extension-aws extension now will auto-detect AWS Lambda resource attributes.