37 KiB
Changelog
Unreleased:
General
- Several more modules have been updated to have
-alphaappended on their versions:opentelemetry-sdk-extension-jfr-eventsopentelemetry-sdk-extension-async-processoropentelemetry-sdk-extension-loggingopentelemetry-sdk-extension-zpagesopentelemetry-sdk-exporter-prometheusopentelemetry-sdk-exporter-tracing-incubatoropentelemetry-opentracing-shimopentelemetry-opencensus-shim
API
Breaking Changes
- Code that was deprecated in
0.13.0has been removed from the project.- Metrics interfaces are no longer available as a part of the
opentelemetry-pomor from theopentelemetry-apimodules. 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 yourOpenTelemetryimplementations with the Propagators preset, via the various builder options. For example, useDefaultOpenTelemetry.builder().setPropagators(propagators).build()to configure your no-sdk implementation.- The
OpenTelemetry.builder()and theOpenTelemetryBuilderinterface have been removed. The builder functionality is now only present on individual implementations of OpenTelemetry. For instance, theDefaultOpenTelemetryclass has a builder available.
- Metrics interfaces are no longer available as a part of the
Deprecations
- The SemanticAttributes class has been moved to a new module:
opentelemetry-semconvand repackaged into a new package:io.opentelemetry.semconv.trace.attributes. The oldSemanticAttributesclass 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.
Enhancements
- The SemanticAttributes have been updated to the latest version of the specification, as of January 7th, 2021.
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, 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
TracerProviderFactorySdkSPI 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 theGlobalOpenTelemetrywhen invoked. - The
SdkTracerManagement.shutdown()method now returnsCompletableResultCodewhich can be used to wait asynchronously for shutdown to complete. - The
sampling.probabilitysampling attribute previously generated by theTraceIdRatioBasedSampleris no longer generated, as it was not conformant with the specifications.
Deprecations
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.autoconfiguremodule. 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
StringUtilsclass in theopentelemetry-extension-trace-propagatorsextension module has been deprecated and will be made non-public in the next release.
Enhancements
- The
OtlpGrpcSpanExporternow 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.autoconfigurewill be the new path for auto-configuration of the SDK, including via SPI, environment variables and system properties. - The
TraceConfigclass 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 theSpanand (alpha)Metricexporters were updated to match. - Timeouts in the exporters can now be specified with
java.util.concurrent.TimeUnitandjava.time.Durationbased configurations, rather than requiring milliseconds.
SDK 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.
Deprecations
- The
AwsXrayIdGeneratorconstructor has been deprecated in favor of using a simplegetInstance()singleton, since it has no state. - The
TraceProtoUtilsclass in theopentelemetry-sdk-extension-otprotomodule has been deprecated and will be removed in the next release.
Bugfixes
- The JaegerRemoteSampler now uses the ParentBased sampler as the basis for any sampling that is done.
Metrics (alpha)
SDK:
- The
InstrumentSelector.newBuilder()method has been renamed toInstrumentSelector.builder()and the methods on the Builder have changed to use the same naming patterns as the rest of the project. - The
MeterProviderFactorySdkclass has been renamed toSdkMeterProviderFactory. - The
SdkMeterProvicer.Builderhas been moved to the top levelSdkMeterProviderBuilder. - The
InstrumentSelectornow requires an instrument type to be provided, and defaults the name regex to.*.
Version 0.13.0 - 2020-12-17
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 theio.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 the
opentelemetry-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, theDefaultOpenTelemetryclass has a builder available. - The
OpenTelemetry.setPropagators()has been deprecated and will be removed in the next release. You should instead create yourOpenTelemetryimplementations with the Propagators preset, via the various builder options. For example, useDefaultOpenTelemetry.builder().setPropagators(propagators).build()to configure your no-sdk implementation.
SDK
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.
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 toOpenTelemetrySdkBuilderas 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.
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.
Version 0.12.0 - 2020-12-04
API
Bugfixes
- Usages of tracers and meters on all
OpenTelemetryinstances 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
AttributesBuilderno long accepts null values for array-valued attributes with numeric or boolean types. - The
TextMapPropagator.fields()method now returns aCollectionrather than aList. Labelshas been converted to an interface, from an abstract class. Its API has otherwise remained the same.TraceStatehas been converted to an interface, from an abstract class. Its API has otherwise remained the same.Attributeshas been converted to an interface, from an abstract class. Its API has otherwise remained the same.- The
ReadableAttributesinterface has been removed, as it was redundant with theAttributesinterface. All APIs that used or returnedReadableAttributesshould accept or return standardAttributesimplementations. SpanContexthas been converted to an interface, from an abstract class. Its API has otherwise remained the same.- The functional
AttributeConsumerinterface has been removed and replaced with a standardjava.util.function.BiConsumer. - The signature of the
BaggageBuilder.put(String, String, EntryMetadata entryMetadata)method has been changed toput(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 theAttributesinterface to enable conversion to a standardjava.util.Map. - An
asMap()method has been added to theBaggageinterface to enable conversion to a standardjava.util.Map. - An
asMap()method has been added to theTraceStateinterface to enable conversion to a standardjava.util.Map. - The Semantic Attributes constants have been updated to the version in the yaml spec as of Dec 1, 2020.
Miscellaneous
- The
HttpTraceContextclass has been deprecated in favor ofW3CTraceContextPropagator.HttpTraceContextwill 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
DefaultContextPropagatorsclass has been deprecated. Access to it will be removed in 0.13.0. - The
TraceMultiPropagatorbuilder 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 theContextPropagatorsinterface. - The
setCallback()method on the asynchronous metric instruments has been deprecated and will be removed in 0.13.0. Instead, use thesetCallback()method on the builder for the instruments. - The
value()method on theStatusCodeenum has been deprecated and will be removed in 0.13.0. - The Baggage
EntryMetadataclass has been deprecated in favor of theBaggageEntryMetadatainterface. The class will be made non-public in 0.13.0.
Extensions
- The
opentelemetry-extension-runtime-metricsmodule 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-utilsmodule 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-tracingmodule has been renamed toopentelemetry-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
IdGeneratorto the resulting SDK. - The
ReadableSpaninterface now exposes theSpan.Kindof the span. - The SDK no longer depends on the guava library.
- The parent SpanContext is now exposed on the
SpanDatainterface.
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.compositeandSpanExporter.compositemethods. 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 callSpanData.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-supportmodule has been renamed toopentelemetry-sdk-extension-awsand the classes in it have been repackaged into theio.opentelemetry.sdk.extension.aws.*packages.
Bugfixes:
- The OpenTracing
TracerShimnow properly handles keys for context extraction in a case-insensitive manner.
Enhancements
- The
opentelemetry-sdk-extension-resourcesnow includes resource attributes for the process runtime via theProcessRuntimeResourceclass. This is included in the Resource SPI implementation that the module provides. - The
opentelemetry-sdk-extension-awsextension now will auto-detect AWS Lambda resource attributes.
Version 0.11.0 - 2020-11-18
API
Breaking changes:
- The SPI interfaces have moved to a package (not a module) separate from the API packages, and now live in
io.opentelemetry.spi.*package namespace. - Builder classes have been moved to the top level, rather than being inner classes.
For example, rather than
io.opentelemetry.api.trace.Span.Builder, the builder is now in its own top-level class:io.opentelemetry.api.trace.SpanBuilder. Methods to create the builders remain in the same place as they were before. - SpanBuilder.setStartTimestamp, Span.end, and Span.addEvent methods which accept a timestamp now accept a timestamp with a TimeUnit instead of requiring a nanos timestamp.
Enhancements:
- Versions of SpanBuilder.setStartTimestamp, Span.end, and Span.addEvent added which accept Instant timestamps
- Setting the value of the
io.opentelemetry.context.contextStorageProviderSystem property todefaultwill enforce that the default (thread local) ContextStorage will be used for the Context implementation, regardless of what SPI implementations are available.
Miscellaneous:
- Invalid W3C
TraceStateentries will now be silently dropped, rather than causing the invalidation of the entireTraceState.
SDK
Breaking Changes:
- The builder class for the
OpenTelemetrySdknow strictly requires its components to be SDK implementations. You can only build anOpenTelemetrySdkwithTracerSdkProviderandMeterSdkProviderinstances.
Enhancements:
- An API has been added to the SDK's MeterProvider implementation (
MeterSdkProvider) that allows the end-user to configure how various metrics will be aggregated. This API should be considered a precursor to a full "Views" API, and will most likely evolve over the coming months before the metrics implementation is complete. See the javadoc forMeterSdkProvider.registerView()for details.
Miscellaneous:
- The
SpanProcessorinterface now includes default method implementations for theshutdown()andforceFlush()methods. - The BatchRecorder implementation has been updated to actually batch the recordings, rather than simply passing them through.
Extensions
Breaking Changes:
- The
@WithSpanannotation has been moved to theio.opentelemetry.extension.annotationspackage in theopentelemetry-extension-annotationsmodule
Bugfixes:
- The memory pool metrics provided by the MemoryPools class in the
opentelemetry-extension-runtime-metricsmodule have been fixed to properly report the committed memory values.
Enhancements:
- A new module has been added to assist with propagating the OTel context in kotlin co-routines.
See the
opentelemetry-extension-kotlinmodule for details.
Version 0.10.0 - 2020-11-06
API
Enhancements
- The W3C Baggage Propagator is now available.
- The B3 Propagator now handles both single and multi-header formats.
- The B3 Propagator defaults to injecting the single B3 header, rather than the multi-header format.
- Mutating a method on
Spannow returns theSpanto enable call-chaining.
Bug fixes
- The
package-infofile was removed from theio.otel.contextpackage because it made the project incompatible with JPMS.
Breaking changes
- There have been many updates to the semantic conventions constants. The constants are now auto-generated from the YAML specification files, so the names will now be consistent across languages. For more information, see the YAML Model for Semantic Conventions.
- All API classes have been moved into the
io.opentelemetry.api.prefix to support JPMS users. - The API no longer uses the
grpc-contextas the context implementation. It now usesio.opentelemetry.context.Context. This is published in theopentelemetry-contextartifact. Interactions with the context were mostly moved to static methods in theSpanandBaggageinterfaces. - The Baggage API has been reworked to more closely match the specification. This includes the removal of the
BaggageManager. Baggage is fully functional within the API, without needing to install an SDK. TracingContextUtilsandBaggageUtilswere removed from the public API. Instead, use the appropriate static methods on theSpanandBaggageclasses, or use methods on theContextitself.- The context propagation APIs have moved into the new
opentelemetry-contextcontext module. DefaultSpanwas removed from the public API. Instead, useSpan.wrap(spanContext)if you need a non-functional span that propagates the trace context.DefaultMeter,DefaultMeterProvider,DefaultTracerandDefaultTracerProviderwere removed from the public API. You can access the same functionality withgetDefault()methods on theMeter,MeterProvider,Tracer, andTracerProvider` classes, respectively.- Some functionality from the
Tracerinterface is now available either on theSpaninterface orContextinterface. - The
OpenTelemetryclass is now an interface, with implementations. Methods on this interface have changed their names to reflect this change. For more information, see OpenTelemetry.java. - All builder-creation methods have been renamed to
.builder(). StatusCanonicalCodehas been renamed toStatusCode.Span.getContext()has been renamed toSpan.getSpanContext().AttributesBuildernow usesputinstead ofaddas the method name for adding attributes.- All parameters are now marked as non-nullable by default.
TextMapPropagatorscould receive a null carrier passed to the extract method.- The
TextMapPropagator.Getterinterface has added a method to return the keys that the propagator uses.
SDK
Enhancements
- A new
MetricDatagauge metric type is now available. - A new
opentelemetry-sdk-testingmodule with a JUnit 5 extension to assist with testing is now available. - The Prometheus metric exporter now consumes
gaugemetrics. - The Jaeger gRPC exporter now maps
Resourceentries to process tags. - The OTLP protobuf definitions were updated to the latest released version: 0.6.0. Both the
SpanandMetricexporters were updated to match. - The
Samplerinterface now allows aSamplerimplementation to update theTraceStatethat is applied to theSpanContextfor the resulting span.
Breaking changes
TraceConfigconfiguration option names (environment variables and system properties) were renamed to match the OpenTelemetery Specification. For more information, see TraceConfig.- The Jaeger gRPC exporter was updated to match the OpenTelemetry Specification. The
messagelog entry attribute has been renamed toeventand a newdropped attributes countattribute was added. For more information, see the Overview. - The
SpanData.getHasRemoteParent()andSpanData.getHasEnded()methods were renamed tohasRemoteParent()andhasEnded(), respectively. - The
IdsGeneratorinterface has been renamed toIdGenerator, and all implementations and relevant factory methods were similarly renamed. - The
RandomIdGeneratoris now accessible via a factory method on theIdGeneratorclass, rather than being exposed itself. UseIdGenerator.random()to acquire an instance. - The OTLP metric exporter now emits
gaugemetrics where appropriate. ValueObserverinstruments now generate gauge metrics, rather than non-monotonic counter-style metrics.ValueObserverinstruments now use theLastValueaggregation instead ofMinMaxSumCount.- The
SpanData.*implementation classes were removed from the public SDK, but the interfaces are still available. SpanProcessor.onStartnow takes aContextas its first parameter.- The
Samplerinterface now takes a parentContextrather than aSpanContext. - Each
Samplerhas been reorganized into their own classes and moved into theio.opentelemetry.sdk.trace.samplerspackage. Factory methods that used to be on theSamplersclass were moved to theSamplerinterface.
Extensions
Enhancements
- A new JUnit5 extension was added for writing tests. For more information, see OpenTelemetryExtension.java.
- A Jaeger
SpanExporterwhich exports via thethrift-over-http protocolis now available. - A Jaeger Propagator is now available.
Breaking changes
- The in-memory exporter(s) have been moved to the
opentelemetry-sdk-testingartifact. - The OpenTracing shim factory class has been renamed from
TraceShimtoOpenTracingShim. The factory methods have changed becauseBaggageManagerwas removed and non-globalOpenTelemetryinstances are now available. - The 's' was removed from the word "exporters" for every exporter artifact. For example,
opentelemetry-exporters-loggingwas renamed toopentelemetry-exporter-logging. - The 's' was removed from the word "extensions" for the package for every SDK extension. For example,
io.opentelemetry.sdk.extensions.otproto.TraceProtoUtilswas renamed toio.opentelemetry.sdk.extension.otproto.TraceProtoUtils.
Thanks
Many thanks to everyone who made this release possible!
@anuraaga @bogdandrutu @Oberon00 @thisthat @HaloFour @jkwatson @kenfinnigan @MariusVolkhart @malafeev @trask @tylerbenson @XiXiaPdx @dengliming @hengyunabc @jarebudev @brianashby-sfx
0.9.1 - 2020-10-07
-
API
- BREAKING CHANGE: SpanId, TraceId and TraceFlags are no longer used as instances, but only contain helper methods for managing conversion between Strings, bytes and other formats. SpanId and TraceId are now natively String-typed, and the TraceFlags is a single byte.
- BREAKING CHANGE: Propagators now only expose a singleton instance.
- BREAKING CHANGE: The LabelConsumer and AttributeConsumer are now first-class interfaces, and the underlying consumer interface has had the key made additionally generic. Please prefer using the specific interfaces, rather than the underlying
ReadableKeyValuePairs.KeyValueConsumer. - BREAKING CHANGE: Minimum JDK version has been updated to 8, with Android API level 24.
- BREAKING CHANGE: Metric Instrument names are now case-insensitive.
- BREAKING CHANGE: The type-safety on Attributes has been moved to a new AttributeKey, and the AttributeValue wrappers have been removed. This impacts all the semantic attribute definitions, and the various APIs that use Attributes.
- BREAKING CHANGE: The obsolete HTTP_STATUS_TEXT semantic attribute has been removed.
- BREAKING CHANGE: The type of the REDIS_DATABASE_INDEX semantic attribute has been changed to be numeric.
- BREAKING CHANGE: Constant Labels have been removed from metric Instrument definitions.
- BREAKING CHANGE: The number of available Span Status options has been greatly reduced (from 16 to 3).
- BREAKING CHANGE: Constant labels have been removed from metric Instrument definitions.
- BREAKING CHANGE: The only way to specify span parenting is via a parent Context
- BREAKING CHANGE: The default TextMapPropagator is now a no-op in the API
- BREAKING CHANGE: CorrelationContext has been renamed to Baggage
- BREAKING CHANGE: Null-valued span attribute behavior has been changed to being "unspecified".
- BREAKING CHANGE: Link and Event interfaces have been removed from the API
- BREAKING CHANGE: The Status object has been removed from the API, in favor of StatusCanonicalCode
- BUGFIX: the
noParentoption on a Span was being ignored if it was set after setting an explicit parent. - BUGFIX: Attributes and Labels now preserve the latest added entry when an existing key has been used.
- BUGFIX: Updated some of the W3C traceparent validation logic to better match the spec.
- FaaS semantic attributes have been added
- Semantic attribute for "exception.escaped" added
-
SDK
- BREAKING CHANGE: The names of the Sampler.Decision enum values, returned by the Sampler interface, have changed.
OpenTelemetrySdk.forceFlush()now returns a CompletableResultCode- BREAKING CHANGE: The
ProbabilitySamplerhas been renamed toTraceIdRatioBased - BREAKING CHANGE: The environment variables/system properties for specifying exporter and span processor configuration have been updated to match the specification.
- BREAKING CHANGE: Exported zipkin attributes have been changed to match the specification.
- BREAKING CHANGE: Metric Descriptor attributes have been flattened into the MetricData for export.
- BREAKING CHANGE: The OpenTelemetrySdk class now returns a TraceSdkManagement interface, rather than the concrete TracerSdkProvider.
- BUGFIX: Zipkin span durations are now rounded up to 1 microsecond, if less than 1.
- BUGFIX: The insecure option for OTLP export now does the correct thing.
- Added a configuration option for disabling SPI-provided ResourceProviders
- New incubator module with helper classes for working with SpanData
- AWS resources now include the
cloud.providerattribute.
-
Extensions
- BREAKING CHANGE: Propagators now only expose a singleton instance.
- The auto-config extension has been moved to the instrumentation project.
- New incubator module with some utilities for mutating SpanData instances.
- The AWS Resource extension will now pull in EKS Resource attributes.
- New pre-release extension for handling logging natively.
Thanks
Many thanks to all who made this release possible:
@bogdandrutu @Oberon00 @jkwatson @thisthat @anuraaga @jarebudev @malafeev @quijote @JasonXZLiu @zoercai @eunice98k @dengliming @breedx-nr @iNikem @wangzlei @imavroukakis
0.8.0 - 2020-09-01
-
Extensions:
- Updated metrics generated by the runtime_metrics module to match the proposed semantic conventions.
-
API:
- BREAKING CHANGE: Renamed HttpTextFormat to TextMapPropagator
- Added a toBuilder method to the Attributes class
- Added method to create an Attributes Builder from ReadableAttributes
- Updates to the Attributes' null-handling to conform to the specification
- TraceState validations were updated to match the W3C specification
- recordException Span API now has an additional overload to support additional attributes
-
SDK:
- BUGFIX: Bound instruments with no recordings no longer generate data points.
- BREAKING CHANGE: The Exporter interfaces have changed to be async-friendly.
- BREAKING CHANGE: The parent context passed to the Sampler will no longer be nullable, but instead an invalid context will be passed.
- BREAKING CHANGE: The SpanProcessor now takes a ReadWriteSpan for the onStart method
- BREAKING CHANGE: ResourceConstants changed to ResourceAttributes
- BREAKING CHANGE: ParentOrElse Sampler changed to be called ParentBased
- Default Resource include the SDK attributes
- ResourceProvider SPI to enable custom Resource providers
- The individual pieces of the SDK are not published as individual components, in addition to the whole SDK artifact.
- Zipkin and Jaeger exporters now include the InstrumentationLibraryInfo attributes.
- The OTLP protobufs were updated to version 0.5.0 and the OTLP exporters were updated accordingly.
-
Many thanks for contributions from @anuraaga, @dengliming, @iNikem, @huntc, @jarebudev, @MitchellDumovic, @wtyanan, @williamhu99, @Oberon00, @thisthat, @malafeev, @mateuszrzeszutek, @kenfinnigan
0.7.1 - 2020-08-14
- BUGFIX: OTLP Span Exporter: fix splitting metadata key-value substring with more than one '=' sign
0.7.0 - 2020-08-02
NOTE: This release contains non-backward-compatible breaking SDK changes
- Added an InMemoryMetricExporter
- Added a toBuilder method to Labels
- Added some semantic attribute constants
- New ZPages extension module with TraceZ and TraceConfigZ pages implemented
- Some overloads added for setting the parent Context
- Some performance improvements in HttpTraceContext implementation
- Removed null checks from the Trace APIs
- The bare API will no longer generate Trace and Span IDs when there is no parent trace context.
- Null Strings are no longer valid keys for Attributes
- BREAKING CHANGE: The Sampler API was changed
- Default endpoint is now set for the OTLP exporters
- BREAKING CHANGE: Jaeger exporter env vars/system properties were updated
- Resource attributes may now be set with a System Property as well as the environment variable.
- Added a propagator for Lightstep OpenTracing propagator
- The ZipkinSpanExporter now defaults to using the OkHttpSender
- The default Sampler in the SDK is now the ParentOrElse sampler
- BUGFIX: SpanWrapper SpanData implementation is now truly Immutable
- Added some simple logging for failed export calls
- Quieted the noisy B3 propagator
- Public constants were added for exporter configuration options
- Added a new configuration option to limit the size of Span attributes
- Many thanks for contributions from @anuraaga, @dengliming, @iNikem, @wtyanan, @williamhu99, @trask, @Oberon00, @MitchellDumovic, @FrankSpitulski, @heyams, @ptravers, @thisthat, @albertteoh, @evantorrie, @neeraj97,
0.6.0 - 2020-07-01
NOTE: This release contains non-backward-compatible breaking API and SDK changes
- Introduction of immutable Attributes for SpansEvents, Links and Resources
- Introduction of immutable Labels for Metric Instruments and Recordings
- BUGFIX: make sure null Points are not propagated to metric exporters
- Added a propagator for AWS X-Ray
- BUGFIX: IntervalMetricReader now handles exceptions thrown by metric exporters
- Renamed contrib modules to "extensions" (Note: this changes the published artifact names, as well)
- Converted CorrelationContext entry keys and values to simple Strings
- Enhanced OTLP exporter configuration options
- Added new SDK Telemetry Resource populator
- Introduced an new MultiTracePropagator to handle multiple propagation formats
- Added new AWS Resource populators
- Added an extension to populate span data into log4j2 log formats.
- Changed the MinMaxSumCount aggregations for ValueRecorders to always aggregate deltas, rather than cumulative
- Updated the OTLP protobuf and exporter to version 0.4.0 of the OTLP protobufs.
0.5.0 - 2020-06-04
TODO: fill this out
- Add helper API to get Tracer/Meter
0.4.0 - 2020-05-04
- Initial implementation of the Zipkin exporter.
- Breaking change: Move B3 propagator to a contrib package
- Add support for Jaeger propagator
- Start implementing support for configuring exporters using Config pattern with support to load from environment variables and system properties.
- Add support to flush the entire SDK processors and exporter pipelines.
- Mark all threads/pools as daemon.
- Add support for Jaeger remote sampler.
0.3.0 - 2020-03-27
- Initial Java API and SDK for context, trace, metrics, resource.
- Initial implementation of the Jaeger exporter.
- Initial implementation of the OTLP exporters for trace and metrics.