Version 0.14.0
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 theopentelemetry-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 theOpenTelemetryBuilder
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.
- Metrics interfaces are no longer available as a part of the
📈 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 oldSemanticAttributes
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 includesotel.exporter.otlp.span.headers
,otel.exporter.otlp.metric.headers
, andotel.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 ofSpanData.Link.getSpanContext()
. - The
TracerProviderFactorySdk
SPI class has been renamed toSdkTracerProviderFactory
. - The
OpenTelemetrySdkBuilder.build()
method has been renamed toOpenTelemetrySdkBuilder.buildAndRegisterGlobal()
.
Thebuild()
method still exists, but no longer sets the instance on theGlobalOpenTelemetry
when invoked. - The
SdkTracerManagement.shutdown()
method now returnsCompletableResultCode
which can be used to wait
asynchronously for shutdown to complete. - The
sampling.probability
sampling attribute previously generated by theTraceIdRatioBasedSampler
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 abuilder()
method directly, so you don't need to get the default then calltoBuilder()
on it. - The OTLP protobuf definitions were updated to the latest released version:
0.7.0
.
Both theSpan
and (alpha)Metric
exporters were updated to match. - Timeouts in the exporters can now be specified with
java.util.concurrent.TimeUnit
andjava.time.Duration
based configurations,
rather than requiring milliseconds. - Objects that can be shutdown now also implement
Closeable
StatusData.isUnset
andStatusData.isOk
have been deprecated and will be removed in the following release
🌟 Miscellaneous
SdkTracerProvider.updateActiveTraceConfig()
andSdkTracerProvider.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 theopentelemetry-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 simplegetInstance()
singleton, since
it has no state. - The
TraceProtoUtils
class in theopentelemetry-sdk-extension-otproto
module has been deprecated and
will be removed in the next release.