Version 0.13.0
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
-alphaappended 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.ArrayBackedLabelsBuilderclass has been made non-public.
You can still access theLabelsBuilderfunctionality via theLabels.builder()method. - Methods deprecated in the 0.12.0 release have been removed or made non-public:
- The
HttpTraceContextclass has been removed. - The
toBuilder()method on the OpenTelemetry interface has been removed. - The
Attributes.builder(Attributes)method has been removed in favor ofAttributes.toBuilder(Attributes). - The
DefaultContextPropagatorsclass has made non-public. - The
TraceMultiPropagatorbuilder has been removed in favor of a simple factory method. - The
value()method on theStatusCodeenum has been removed. - The Baggage
EntryMetadataclass has been removed in favor of theBaggageEntryMetadatainterface. - The
setCallback()method on the asynchronous metric instruments has been removed.
- The
- Several public classes have been made
final.
📈 Enhancements
- An
asMapmethod has been added to theLabelsinterface, to expose them as ajava.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 allScopes 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.Contextinterface for details. - Several of the methods on the
Spaninterface 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-apimodule, 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 theopentelemetry-apimodule, you should get the rest of the API modules as transitive dependencies. - The
OpenTelemetry.builder()and theOpenTelemetryBuilderinterface 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
DefaultOpenTelemetryclass has a builder available. - The
OpenTelemetry.setPropagators()has been deprecated and will be removed in the next release. You should instead create your
OpenTelemetryimplementations 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
Sdkrather than havingSdkbeing embedded in the middle of the name.
For example,TracerSdkhas been renamed toSdkTracerandTracerSdkManagementhas been renamed toSdkTracerManagement. - The
ResourcesConfig.builder()method has been made non-public. - The
TraceConfig.Builderclass has been moved to the top-levelTraceConfigBuilderclass. - The built-in exporter
Builderclasses have been moved to the top level, rather than inner classes. Access to the builders
is still available viabuilder()methods on the exporter classes. - The built-in SpanProcessor
Builderclasses have been moved to the top level, rather than inner classes. Access to the builders
is still available viabuilder()methods on the SpanProcessor implementation classes. - The built-in ParentBasedSampler
Builderclass 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
DaemonThreadFactoryclass has been moved to an internal module and should not be used outside of this repository. - The builder class for the
OpenTelemetrySdkclass 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 returnsCompletableResultCoderather 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
OpenTelemetrySdkBuilderas a part of that change. - The OTLP exporters have been split into two separate modules, and the metrics exporter has been tagged with the
-alphaversion.
If you continue to depend on theopentelemetry-exporters-otlpmodule, you will only get the trace exporter as a transitive dependency.
🌟 Miscellaneous
- The
SpanData.Link.getContext()method has been deprecated in favor of a newSpanData.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-otprotomodule 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-annotationsmodule now includes the api module as anapidependency, rather than justimplementation.
☢️ Breaking Changes
- The deprecated
opentelemetry-extension-runtime-metricsmodule has been removed. The functionality is available in the
opentelemetry-java-instrumentation project under a different module name. - The deprecated
trace-utilsmodule has been removed. - Several public classes have been made
final.
📈 Enhancements
- Some common OTLP adapter utilities have been moved into the
opentelemetry-sdk-extension-otprotomodule so they can
be shared across OTLP exporters.