Releases: open-telemetry/opentelemetry-java
Version 1.22.0
API
- WARNING: GlobalOpenTelemetry trigger of autoconfiguration is now opt-in. Previously,
GlobalOpenTelemetry.gettriggered autoconfiguration ifopentelemetry-sdk-extension-autoconfigurewas detected on the classpath. That behavior is now opt-in by setting environment variableOTEL_JAVA_GLOBAL_AUTOCONFIGURE_ENABLED=true. (#5010) - Update LoggerBuilder, MeterBuilder, TracerBuilder javadoc (#5050)
Context
- Make closing scope idempotent and non-operational when corresponding context is not current. (#5061)
SDK
- Standardize internal usage of
ConfigUtilfor reading environment variables and system properties (#5048)
Metrics
- Lazily initialize exponential histogram buckets (#5023)
- Delete MapCounter alternative exponential histogram implementation (#5047)
- Add toString to SdkMeter, SdkObservableInstrument, AbstractInstrumentBuilder (#5072)
Exporter
OtlpGrpcSpanExporter,OtlpHttpSpanExporter,OtlpGrpcLogRecordExporter,OtlpHttpLogRecordExporter,ZipkinSpanExporter, andJaegerGrpcSpanExporterare now instrumented withGlobalOpenTelemetryby default. Instrumentation initializes lazily to prevent ordering issue of accessingGlobalOpenTelemetry.getbeforeGlobalOpenTelemetry.setis called. (#4993)- Add
ConfigurableSpanExporterProviderimplementation forJaegerGrpcSpanExporter(#5002) - Add
ConfigurableSpanExporterProvider,ConfigurableMetricExporterProvider,ConfigurableLogRecordExporterProviderforOtlpGrpc{Signal}Exporters andOtlpHttp{SignalExporters (#5003) - Replace OTLP User-Agent spaces with dashes (#5080)
- Add
AutoConfigurationCustomizerProviderimplementation forPrometheusHttpServer(#5053) - Add resource
target_infoand scopetarget_infometrics toPrometheusHttpServerin compliance with spec (#5039) - Drop delta metrics in
PrometheusHttpServer(#5062) - PrometheusHttpServer drops metrics with same name and different type (#5078)
SDK Extensions
- DEPRECATION: Align autoconfigure exemplar filter names with spec. Previous names
none,all,with_sampled_traceare deprecated. Usealways_off,always_on,trace_basedinstead. (#5063)
OpenTracing Shim
- Add createTracerShim function (#4988)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@amouhadi
@brunobat
@carlosalberto
@cuichenli
@dashpole
@deejgregor
@jack-berg
@jkwatson
@lmolkova
@mateuszrzeszutek
@Oberon00
@RajatArora08
@trask
@vasireddy99
@yangtaoran
Version 1.21.0
API
API Extensions
- WARNING:
opentelemetry-extension-awshas been removed following its relocation to opentelemetry-java-contrib/aws-xray-propagator, which is published under coordinatesio.opentelemetry.contrib:opentelemetry-aws-xray-propagator:{version}. We will push security patches to1.20.xas needed. The latestopentelemetry-bomwill point to the latest published version, currently1.20.1. (#4945) - Add toString implementation to various propagator components (#4996)
SDK
Logs
- Add toString implementation to various log SDK components (#4979)
Metrics
- Add histogram collection benchmark (#4912)
- Add ExponentialHistogramIndexerBenchmark (#4989)
- Stop extra copy of exponential histogram buckets (#5020)
Exporter
- Zipkin exporter serializes EventData attributes as JSON (#4934)
- Add support for EC mTLS keys (applies to
OtlpHttp{Signal}Exporter,OtlpGrpc{Signal}Exporter,JaegerGrpcSpanExporter,JaegerRemoteSampler) (#4920) - Add
Configurable{Signal}ExporterProviderimplementations forLogging{Signal}Exporters (#4950) - Add
ConfigurableSpanExporterProviderimplementation forZipkinSpanExporter(#4991) - Add
Configurable{Signal}ExporterProviderimplementations forOtlpJsonLogging{Signal}Exporters (#4992) ZipkinSpanExporterpopulates remoteEndpoint (#4933)
SDK Extensions
- BREAKING: Remove support for otel.experimental.sdk.enabled from autoconfigure (#4973)
- De-singleton ZPageServer implementation (#4935)
- Add auto-configure support for logging-otlp exporters (#4879)
- Move DefaultConfigProperties to internal package in
opentelemetry-sdk-extension-autoconfigure-spi(#5001)
Testing
- Make APIs for asserting attributes consistent (#4882)
- Attribute assertions error messages always contain the attr key (#5027)
Semantic Conventions
OpenTracing Shim
- Handle unsupported types when setting Attributes (#4939)
- Properly set the status based on the error tag (#4962)
- Handle
io.opentracing.noop.NoopSpancorrectly (#4968) - Log invalid arguments rather than throwing exceptions. (#5012)
- Stop mapping semconv values from OpenTracing to OTel. (#5016)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@ben-roling
@breedx-splk
@carlosalberto
@giraone
@jack-berg
@jkwatson
@jonatan-ivanov
@knutwannheden
@lmonkiewicz
@mateuszrzeszutek
@mattspataro
@sno544
@sriraamas
@tmccombs
@trask
@yunchen-myob
Version 1.20.1
This is a patch release on the previous 1.20.0 release, fixing the issue(s) below.
Bugfixes
- Fix bug in
ComponentRegistrythat producesConcurrentModificationExceptionwhen reading metrics at the same time as obtaining a meter. (#4951)
Version 1.20.0
API
- Fix bug in
W3CBaggagePropagatorthat caused+characters to be decoded as whitespace. (#4898)
API Extensions
- DEPRECATION: the
opentelemetry-extension-awsmodule containing variousAwsXrayPropagatorimplementations has been deprecated for removal in next major version. A copy of the code will instead be maintained in opentelemetry-java-contrib/aws-xray-propagator and published under coordinatesio.opentelemetry.contrib:opentelemetry-aws-xray-propagator:{version}. (#4862)
SDK
Traces
- Add graal hints for shaded dependencies, allowing
JcToolsqueue to be used in graal environment. (#4832) Sampler#getDescription()implementations are now locale independent. (#4877)- Allow SDK to run in environments prohibiting use of
sun.misc.Unsafe. (#4902)
Metrics
- Add
toStringtoAbstractInstrument. (#4833) - Add zero bucket boundary to default explicit bucket histogram aggregation. (#4819)
Logs
- Optimize log hot path, reducing allocations significantly. (#4913)
- BREAKING: Add
Contextargument toLogRecordProcessor#onEmit. (#4889)
Exporter
OtlpLogging{Signal}Exporters encode enums as numbers. (#4783)- Add
User-Agentheader ofOTel OTLP Exporter Java/{version}to OTLP export requests. (#4784)
SDK Extensions
- WARNING:
opentelemetry-sdk-extension-awshas been removed following its relocation to opentelemetry-java-contrib/instrumentation-aws-xray, which is published under coordinatesio.opentelemetry.contrib:opentelemetry-aws-resources:{version}. We will push security patches to1.19.xas needed. The latestopentelemetry-bomwill point to the latest published version, currently1.19.0. (#4830) - WARNING:
opentelemetry-sdk-extension-resourceshas been removed following its relocation to opentelemetry-java-instrumentation/instrumentation/resources/library, which is published under coordinatesio.opentelemetry.instrumentation:opentelemetry-resources:{version}. We will push security patches to1.19.xas needed. The latestopentelemetry-bomwill point to the latest published version, currently1.19.0. (#4828) - Add autoconfigure support for
BatchLogRecordProcessor. (#4811) - Autoconfigure performs percent decoding on
otel.resource.attributesvalues. (#4653) - Unify compression configuration for exporters including (#4775): * Fix handling of
nonein OTLP exporters. * AddJaegerGrpcSpanExporterBuilder#setCompression(String). * AddZipkinSpanExporterBuilder#setCompression(String).
Semantic Conventions
- Add migration notes to deprecated attributes (#4840)
OpenTracing Shim
- Use
opentracing-shimas instrumentation scope name. (#4890) - Add full support for multiple parents. (#4916)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@amouhadi
@bogdandrutu
@breedx-splk
@carlosalberto
@codeboten
@Donnerbart
@fniephaus
@jack-berg
@jkwatson
@jsuereth
@kubawach
@lgfa29
@lmonkiewicz
@lukiano
@marcingrzejszczak
@mateuszrzeszutek
@mkorzeniewski
@reyang
@rrva
@sdeleuze
@trask
Version 1.19.0
This release contains a large number of changes to the log signal following a series of significant changes to the log specification. The changes include renaming key classes like LogExporter to LogRecordExporter, and LogProcessor to LogRecordProcessor, and LogEmitter to Logger, and more. Additionally, a log API component has been added for emitting events and for writing log appenders. Note, the log API is not a substitute for traditional log frameworks like Log4j, JUL, SLF4J, or Logback. While the event portion of the API is intended for instrumentation authors and end users, the API for emitting LogRecords is not. See LoggerProvider and Logger javadoc for more details.
General
- Add
opentelemetry-bomas a dependency toopentelemetry-bom-alpha, ensuring synchronization between alpha and stable artifact versions.
API
API Extensions
- WARNING:
opentelemetry-extension-annotationshas been removed following its relocation to opentelemetry-java-instrumentation/instrumentation-annotations, which is published under coordinatesio.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:{version}. We will push security patches to1.18.xas needed. The latestopentelemetry-bomwill point to the latest published version, currently1.18.0.
Logs
- Introduce log API for emitting events and writing log appenders. The artifact is available at coordinates
io.opentelemetry:opentelemetry-api-logs:1.19.0-alpha.
SDK
Metrics
- Change exponential histogram bucket boundaries to be lower exclusive / upper inclusive, instead of lower inclusive / upper exclusive.
Logs
- BREAKING: Rename
SdkLogEmitterProvidertoSdkLoggerProvider.OpenTelemetrySdkBuilder#setLogEmitterProviderhas changed toOpenTelemetrySdkBuilder#setLoggerProvider.OpenTelemetrySdk#getSdkLogEmitterProviderhas changed toOpenTelemetrySdk#getSdkLoggerProvider.AutoConfigurationCustomizer#addLogEmitterProviderCustomizerhas changed toAutoConfigurationCustomizer#addLoggerProviderCustomizer. - BREAKING: Rename
LogEmittertoLogger. - BREAKING: Rename
LogExportertoLogRecordExporter.SystemOutLogExporterhas changed toSystemOutLogRecordExporter.OtlpJsonLoggingLogExporterhas changed toOtlpJsonLoggingLogRecordExporter.OtlpHttpLogExporterhas changed toOtlpHttpLogRecordExporter.OtlpGrpcLogExporterhas changed toOtlpGrpcLogRecordExporter.InMemoryLogExporterhas changed toInMemoryLogRecordExporter. ConfigurableLogExporterProviderhas changed toConfigurableLogRecordExporterProvider`. - BREAKING: Rename
LogDatatoLogRecordData.TestLogDatahas changed toTestLogRecordData. - BREAKING: Rename
LogProcessortoLogRecordProcessor.BatchLogProcessorhas changed toBatchLogRecordProcessor.SimpleLogProcessorhas changed toSimpleLogRecordProcessor.
Exporter
- OTLP log record exporters now include dropped_attributes_count.
SDK Extensions
- Autoconfigure now supports an option to disable the SDK. If
otel.sdk.disabled=true,AutoConfiguredOpenTelemetrySdk#getOpenTelemetrySdk()returns a minimal (but not noop)OpenTelemetrySdkwith noop tracing, metric and logging providers. The same minimal instance is set toGlobalOpenTelemetry. The now deprecated propertyotel.experimental.sdk.enabledwill continue to work in the same way during a transition period. - Fix
ProcessResourcedirectory separator to use/or\instead of:or;. - DEPRECATION: the
opentelemetry-sdk-extension-resourcemodule containing variousResourceProviderimplementations has been deprecated for removal in next major version. A copy of the code will instead be maintained in opentelemetry-java-instrumentation/instrumentation/resources/library and published under coordinatesio.opentelemetry.instrumentation:opentelemetry-resources:{version}. - DEPRECATION: the
opentelemetry-sdk-extension-awsmodule containing AWSResourceProviderimplementations has been deprecated for removal in next major version. A copy of the code will instead be maintained in opentelemetry-java-contrib/aws-resources and published under coordinatesio.opentelemetry.contrib:opentelemetry-aws-resources:{version}.
OpenTracing Shim
- Fully support Baggage-only propagation.
Semantic conventions
- The semantic conventions have been updated to 1.13.0.
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@anuraaga
@breedx-splk
@brunobat
@carlosalberto
@jack-berg
@jamesmoessis
@jkwatson
@jmacd
@joshua-bell-sonrai
@jsuereth
@mateuszrzeszutek
@rapphil
@SampathKumarAmex
@trask
Version 1.18.0
SDK
- Added scope attributes to
InstrumentationScopeInfoaccessible viaInstrumentationScopeInfo#getAttributes(). Will add the ability to specify scope attributes in Meter, Tracer, and Logger in a future version. - DEPRECATION: The
InstrumentationScopeInfo#create(String, String, String)method has been deprecated in favor ofInstrumentationScopeInfo#builer(String).setVersion(String).setSchemaUrl(String).build(). - Optimize
Resource#merge(Resource)by returning early if the other resource is empty.
Logs
- Fix module name of
opentelemetry-sdk-logsby changing fromio.opentelemetry.sdk.extension.loggingtoio.opentelemetry.sdk.logs.
Testing
- Add methods to assert attributes do not contain keys via
AttributeAssert#doesNotContainKey().
Exporter
- Added ability to specify local IP address in
ZipkinSpanExporterviaZipkinSpanExporterBuilder#setLocalIpAddressSupplier(Supplier<InetAddress>). - Upgrade to OTLP protobuf version 0.19.0.
- OTLP exporters now serialize
InstrumentationScopeInfo#getAttributes(). - Stop publishing
opentelemetry-exporter-jaeger-proto. Theopentelemetry-bomwill include a constraint on the last published version1.17.0. If security issues are discovered, patches will be published to1.17.x.
SDK Extensions
- BREAKING:
opentelemetry-sdk-extension-metric-incubator,opentelemetry-sdk-extension-tracing-incubator, andopentelemetry-sdk-extension-zpagesmerged intoopentelemetry-sdk-extension-incubator. - BREAKING: Move
opentelemetry-sdk-extension-jfr-eventsto opentelemetry-java-contrib/jfr-events. It will now be published under the coordinatesio.opentelemetry.contrib:opentelemetry-jfr-events:{version}. - BREAKING: Move
opentelemetry-extension-noop-apito opentelemetry-java-contrib/noop-api. It will now be published under the coordinatesio.opentelemetry.contrib:opentelemetry-noop-api:{version}. - Improve ECS resource detection to include
aws.ecs.container.arn,container.image.name,container.image.tag,aws.ecs.container.image.id,aws.log.group.arns,aws.log.group.names,aws.log.steam.names,aws.ecs.task.arn,aws.ecs.task.family, andaws.ecs.task.revision. - Fix resource
container.iddetection when using k8s with containerd v1.5.0+. - Add experimental
ConditionalResourceProviderSPI, for conditionally applying resource providers based on current config and resource.
Micrometer shim
- BREAKING: Move
opentelemetry-micrometer1-shimto opentelemetry-java-instrumentation/instrumentation/micrometer/micrometer-1.5/library. It will now be published under the coordinatesio.opentelemetry.instrumentation:opentelemetry-micrometer-1.5:{version}.
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@anuraaga
@bogdandrutu
@breedx-splk
@felixscheinost
@jack-berg
@jj22ee
@jkwatson
@kubawach
@mateuszrzeszutek
@mmanciop
@SampathKumarAmex
@trask
@willarmiros
@wzy531a
Version 1.17.0
API
API Extensions
- DEPRECATION: the
opentelemetry-extension-annotationsmodule containing@WithSpanand@SpanAttributeannotations has been deprecated for removal in next major version. A copy of the code will instead be maintained in opentelemetry-java-instrumentation/instrumentation-annotations and published under coordinatesio.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:{version}.
SDK
Traces
- Add default implementation for
SpanData#getInstrumentationScopeInfo()andReadableSpan#getInstrumentationScopeInfo(). This fixes a previous mistake where those interfaces were extended without default implementation, a breaking change for source compatibility. Stricter checks have been added to ensure this mistake is not repeated.
Logs
- BREAKING: delete
LogDataBuilder. A similar implementation ofLogDatacalledTestLogDatahas been added toopentelemetry-sdk-logs-testing. - BREAKING: rename
LogProcessor#emit(LogData)toLogProcessor#onEmit(ReadWriteLogRecord). The argument change fromLogDatatoReadWriteLogRecordallows implementations to mutate logs. To obtainLogData, callReadWriteLogRecord#toLogData(). - Optimize
SdkLogEmitterProviderto return noopLogEmitterwhen noLogProcessors are registered.
Exporter
- Split out shared and internal exporter classes from
opentelemetry-exporter-otlp-commontoopentelemetry-exporter-common. - Add experimental support for OTLP header based authentication. To use, add a dependency on
opentelemetry-exporter-commonand callio.opentelemetry.exporter.internal.auth.Authenticator#setAuthenticatorOnDelegate(OtlpHttp{Signal}Builder, Authenticator). - Add ability to collect export metrics on
ZipkinSpanExporterviaZipkinSpanExporter#setMeterProvider(MeterProvider). - Minor optimization to OkHttp based exporters to cache endpoint URLs. Applies to
OtlpHttp{Signal}Exporter,OtlpGrpc{Signal}Exporter, and more. - Fix diagnostic log message in
OtlpGrpc{Signal}Exporterto include correct environment variables.
SDK Extensions
- Extend View file based configuration with support for specifying explicit bucket histogram bucket boundaries and exponential bucket counts.
- Extend autoconfigure SPI
AutoConfigurationCustomizerProviderandResourceProviderwith option to specify ordering. - Add autoconfigure SPI with
ConfigurableLogExporterProvider, allowing custom named log exporters to be provided and selected via autoconfigure. - Extend autoconfigure SPI with
AutoConfigurationCustomizer#addPropertiesCustomizer, providing the ability examine current configuration properties and add / overwrite properties.
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@anuraaga
@bogdandrutu
@breedx-splk
@chalin
@DaveCTurner
@deejgregor
@Donnerbart
@GrahamLea
@iRevive
@jack-berg
@JavaPerformance
@jkwatson
@lmolkova
@mateuszrzeszutek
@sfriberg
@trask
@trivikr
Version 1.16.0
API
- Fix bug
ImmutableKeyValuePairsimplementation that causesArrayIndexOutOfBoundsExceptionto be thrown under certain conditions.
SDK
Traces
- Optimize
BatchSpanProcessorusing JcTools.
Metrics
- Tighten up exponential histogram implementation for alignment with specification: Default to 160 positive and negative buckets. Remove ability to configure starting scale. Minimum number of buckets is one instead of zero.
- Allow
MetricExporterandMetricReaderto influence default aggregation. The default aggregation is used when no registered views match an instrument.
Exporter
- Fix handling of client keys in PEM format.
- For OTLP exporters, change behavior to use
OkHttpGrpcExporter(OkHttp implementation that doesn't use any gRPC dependencies) unlessOtlpGrpc{Signal}Builder#setChannel(ManagedChannel)is called by user. Previously,OkHttpGrpcExporterwas used if no gRPC implementation was found on classpath. - Add support to configure default aggregation on OTLP metric exporters via
Otlp{Protocol}MetricExporterBuilder#setDefaultAggregationSelector(DefaultAggregationSelector).
Testing
- Add span status assertions.
SDK Extensions
- Autoconfigure properly handles non-string system properties.
- Autoconfigure normalizes hyphens
-to periods.when accessingConfigProperties.
OpenTracing Shim
- Add support for span wrappers.
- Store OpenTracing
SpanContextin OpenTracingSpanwrapper. - Use
Baggageof active span.
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@aaron-ai
@anuraaga
@breedx-splk
@carlosalberto
@codeboten
@cuichenli
@fax4ever
@HaloFour
@jack-berg
@jkwatson
@jsuereth
@mateuszrzeszutek
@mohitmahi
@pavolloffay
@pureklkl
@trask
@xiangtianyu
@zeitlinger
Version 1.15.0
API
- Add batch callback API, allowing a single callback to record measurements to multiple metric instruments.
SDK
Metrics
SdkMeterProvider#toString()now returns a useful string describing configuration.- Fix bug preventing proper function of Metrics SDK when multiple readers are present (#4436).
- Fix reporting intervals for metrics for delta readers (#4400).
Exporter
- BREAKING: merge all stable OTLP exporters into
opentelemetry-exporter-otlp.opentelemetry-exporter-otlp-trace,opentelemetry-exporter-otlp-metrics,opentelemetry-exporter-otlp-http-trace, andopentelemetry-exporter-otlp-http-metricsare no longer published and their contents have been merged into a single artifact. - BREAKING: merge log OTLP exporters into
opentelemetry-exporter-otlp-logs.opentelemetry-exporter-otlp-http-logsis no longer published and its contents have been merged into a single artifact. - Upgrade to OTLP protobuf version 0.18.0.
- RetryInterceptor retries on
SocketTimeoutExceptionwith no message. - Added
JaegerGrpcSpanExporterBuilder#setMeterProvider(), enabling support of experimental jaeger span export metrics. - DEPRECATION: the
opentelemetry-exporter-jaeger-protomodule containing jaeger proto definitions and corresponding generated classes is deprecated for removal in next major version. - OTLP gRPC exporters support overriding
:authorityviaOtlpGrpc*ExporterBuilder#addHeader("host", "my-authority-override").
SDK Extensions
- BREAKING: Move
ConfigureableMetricExporterProviderfromopentelemetry-sdk-extension-autoconfigureto stableopentelemetry-sdk-extension-autoconfigure-spi. - Autoconfigure now supports multiple values for
otel.metrics.exporter. - Autoconfigure now supports general attribute limits, applicable to span attributes, span event attributes, span link attributes, and log attributes.
- Autoconfigure now supports an experimental option to disable the SDK. If
otel.experimental.sdk.enabled=true,AutoConfiguredOpenTelemetrySdk#getOpenTelemetrySdk()returns a minimal (but not noop)OpenTelemetrySdk. The same minimal instance is set toGlobalOpenTelemetry. - New "get or default" methods have been added to
ConfigProperties. E.g.ConfigProperties#getString("otel.metrics.exporter", "otlp")fetches the value for the propertyotel.metrics.exporterand returnsotlpif it is not set. - Fix bug in
ContainerResourceprovider that caused it to throw an exception in some instances when containerd is used.
Micrometer shim
- Cache descriptions such that metrics with the same name use the first seen description.
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@anuraaga
@breedx-splk
@chenjazz
@cyrille-leclerc
@donce
@Donnerbart
@evantorrie
@jack-berg
@jkwatson
@jonahaapala
@jsuereth
@kubawach
@laurit
@marcalff
@mateuszrzeszutek
@nicklocaso
@Oberon00
@pkgonan
@rupinder10
@trask
@wallezhang
Version v1.14.0
The metrics SDK is stable! New stable artifacts include:
io.opentelemetry:opentelemetry-sdk-metrics(also now included inio.opentelemetry:opentelemetry-sdk)io.opentelemetry:opentelemetry-exporter-otlp-metrics(also now included inio.opentelemetry:opentelemetry-exporter-otlp)io.opentelemetry:opentelemetry-exporter-otlp-http-metrics- Metrics testing components have been moved from
io.opentelemetry:opentelemetry-sdk-metrics-testingto the stableio.opentelemetry:opentelemetry-sdk-testing.
While the API of the metrics SDK is now stable, there are a couple of known issues that will be addressed in the next release:
- The start time is incorrect for delta metrics when the first recording for a set of attributes occurs after the first collections (#4400).
- Registering multiple readers results in incorrect metrics (#4436).
SDK
Traces
- Fix bug where non-runtime exception breaks
BatchSpanProcessor. - Fix bug preventing attribute limits from applying to exception events.
Logs
- BREAKING: Drop deprecated methods referencing
InstrumentationLibraryInfofrom Log SDK.
Metrics
- Instrument name is validated. If invalid, a warning is logged and a noop instrument is returned.
- Default unit is empty instead of
1. If an invalid unit is set, a warning is logged and empty is used. - Ensure symmetry between type of
PointDataand their type of exemplars (double or long). - BREAKING: Rename
MetricReader#flush()toMetricReader#forceFlush(). - Introduce
AggregationTemporalitySelectorinterface for selecting aggregation temporality based on instrument.MetricReaderandMetricExporterextendAggregationTemporalitySelector.
SDK Extensions
- BREAKING: Remove deprecated option to specify temporality with
otel.exporter.otlp.metrics.temporality. Useotel.exporter.otlp.metrics.temporality.preferenceinstead. - Log warning when
AwsXrayPropagatorcan't identify parent span id. - Fix jaeger remote sampling bug preventing correct parsing of 0-probability sampling strategies.
Exporter
- Fix prometheus exporter formatting bug when there are no attributes.
- Ensure prometheus metrics with the same name are serialized as a group.
- BREAKING:
OtlpHttpMetricExporterBuilderandOtlpGrpcMetricExporterBuilderconfigure aggregation temporality via#setAggregationTemporalitySelector(AggregationTemporalitySelector).
Testing
- BREAKING: Metrics testing components added to stable
io.opentelemetry:opentelemetry-sdk-testingmodule, includingInMemoryMetricReader,InMemoryMetricExporter, andMetricAssertions.assertThat(MetricData)has been moved toOpenTelemetryAssertions.assertThat(MetricData). - BREAKING: The patterns for metrics assertions have been adjusted to better align with assertj conventions. See #4444 for examples demonstrating the change in assertion patterns.
- BREAKING: Metric assertion class names have been simplified.
- Add
TraceAssert.hasSpansSatisfyingExactlyInAnyOrder(..)methods.
Micrometer shim
- Instrumentation scope name changed to
io.opentelemetry.micrometer1shim.
Project tooling
- Many improvements to the build and release workflows. Big thanks to @trask for driving standardization across
opentelemetry-java,opentelemetry-java-instrumentation, andopentelemetry-java-contrib!
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@anuraaga
@arminru
@cbos
@chrismgrayftsinc
@gfelbing
@jack-berg
@jkwatson
@jsuereth
@kubawach
@laurit
@mateuszrzeszutek
@middlewareman
@OliverO2
@trask
@wallezhang
@ZQiannnn