Releases: open-telemetry/opentelemetry-java
Version 1.25.0
API
- Cache ImmutableKeyValuePairs#hashCode (#5307)
Propagators
- Remove streams from B3Propagator (#5326)
SDK
Metrics
- Stop validating instrument unit (#5279)
- Make the Executor for PrometheusHttpServer configurable (#5296)
Exporter
Testing
- Fixing up javadoc to reflect how to create a junit4 OpenTelemetryRule (#5299)
SDK Extensions
- BREAKING: Autoconfigure drops support for
otel.exporter.otlp.metrics.default.histogram.aggregation=EXPONENTIAL_BUCKET_HISTOGRAM
. UseBASE2_EXPONENTIAL_BUCKET_HISTOGRAM
instead. (#5290) - JaegerRemoteSampler use upstream grpc implementation if ManagedChannel is set (#5287)
OpenTracing Shim
- Adds version to otel tracer instrumentation scope (#5336)
OpenCensus Shim
- Adds version to otel tracer instrumentation scope (#5336)
Semantic Conventions
- Update semconv to 1.19.0 and related build tool changes (#5311)
๐ Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@971758118
@abhisesh
@anuraaga
@breedx-splk
@BrentDouglas
@dmarkwat
@jack-berg
@jkwatson
@lmolkova
@marcalff
@mateuszrzeszutek
@mbazos
@steffan-westcott
@trask
@zqq525
Version 1.24.0
SDK
Metrics
- Optimize DefaultSynchronousMetricStorage iteration to reduce allocations (#5183)
- Avoid exemplar allocations if there are no measurements (#5182)
- Remove boxed primitives from aggregations to reduce allocations (#5184)
- Stop ignoring long measurements in HistogramExemplarReservoir (#5216)
- Remove validations for noop instrument names and units (#5146)
- Allow views to select on instrument unit (#5255)
Exporter
- Add (internal) TlsConfigHelper for additional TLS configurability (#5246)
SDK Extensions
OpenTracing Shim
-
OpenTracing Shim: Update Tracer.close() (#5151)
-
Update version to 1.24.0 (#5198)
-
Post release 1.23.0 (#5202)
OpenCensus Shim
- Addresses opencensus-shim trace issues under otel javaagent (#4900)
Project tooling
- Cleanup readmes (#5263)
- Upgrade to gradle 8.0.1 (#5256)
- Fixed example resource provider classname. (#5235)
- Fix case of bug label in open issue workflow (#5268)
๐ Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@anuraaga
@bogdandrutu
@breedx-splk
@carlosalberto
@cheempz
@chicobento
@der-eismann
@dmarkwat
@hriddhighosh4
@jack-berg
@jkwatson
@mateuszrzeszutek
@MrAlias
@rossabaker
@trask
@tsloughter
@yurishkuro
Version 1.23.1
This is a patch release on the previous 1.23.0 release, fixing the issue(s) below.
- Fix bug that broke
AutoConfiguredOpenTelemetrySdk
's shutdown hook. (#5221)
Version 1.23.0
This release is a notable release for metrics:
- The base2 exponential histogram aggregation has been marked as stable. To use, configure your
MetricExporter
with a default aggregation ofAggregation.base2ExponentialBucketHistogram()
for histogram instruments. If using OTLP exporter with autoconfigure, setOTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION=BASE2_EXPONENTIAL_BUCKET_HISTOGRAM
. If using configuring OTLP programatically, useOtlp*MetricExporterBuilder#setDefaultAggregationSelector(DefaultAggregationSelector)
. - The metrics SDK undergone significant internal refactoring which results in reduced complexity and significantly reduced memory allocation during metric collection / export.
API
Logs
- WARNING: Split out Event API from Log API. Event API is now published in
opentelemetry-api-events
. API / SDK usage has also changed - see PR for details. (#5049)
SDK
- Add shutdown / close to
OpenTelemetrySdk
(#5100)
Metrics
- Base2 exponential histogram aggregations are now stable. Add
base2ExponentialBucketHistogram()
toAggregation
. (#5143) - Promote exponential histogram data interfaces to stable package (#5120)
- Add Base2 prefix to internal exponential histogram classes (#5179)
- Add MaxScale config parameter to
Base2ExponentialBucketHistogram
(#5044) - Add close method to
MetricReader
(#5109) - Reuse
AggregatorHandle
with cumulative temporality to reduce allocations (#5142) - Delete notion of accumulation to reduce allocations (#5154)
- Delete bound instruments (#5157)
- Reuse aggregation handles for delta temporality to reduce allocations (#5176)
Exporter
- Add proper shutdown implementations for all exporters (#5113)
SDK Extensions
- WARNING: Remove deprecated autoconfigure exemplar filter names. Previous names
none
,all
,with_sampled_trace
have been removed. Usealways_off
,always_on
,trace_based
instead. (#5098) - Add autoconfigure support for "none" option for propagator value (#5121)
- Add autoconfigure support for
parentbased_jaeger_remote
sampler (#5123) - Autoconfigure closes up autoconfigured resources in case of exception (#5117)
- View file based config has switched from snakeyaml to snakeyaml-engine for YAML parsing. (#5138)
- Fix autoconfigure resource providers property docs (#5135)
Testing
- WARNING: Merge
opentelemetry-sdk-metrics-testing
intoopentelemetry-sdk-testing
. Stop publishingopentelemetry-sdk-metrics-testing
. (#5144) - Sort spans by start time (parents before children as tiebreaker) to avoid common causes for flaky tests (#5026)
- Add resource assertion methods to
SpanDataAssert
andMetricAssert
(#5160)
Semantic Conventions
OpenTracing Shim
- Refactor to remove internal objects
BaseShimObject
andTelemetryInfo
(#5087) - WARNING: Minimize public surface area of OpenTracingShim. Remove
createTracerShim()
,createTracerShim(Tracer)
,createTracerShim(Tracer, OpenTracingPropagators)
. AddcreateTracerShim(TracerProvder,TextMapPropagator,TextMapPropagator)
. (#5110)
Project tooling
- Add OWASP dependency check (#5177)
๐ Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@anuraaga
@bcmedeiros
@breedx-splk
@carlosalberto
@Donnerbart
@fsalvini
@ilteristabak
@jack-berg
@jkwatson
@mateuszrzeszutek
@rapphil
@stnor
@tigrannajaryan
@trask
@zeitlinger
Version 1.22.0
API
- WARNING: GlobalOpenTelemetry trigger of autoconfiguration is now opt-in. Previously,
GlobalOpenTelemetry.get
triggered autoconfiguration ifopentelemetry-sdk-extension-autoconfigure
was 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
ConfigUtil
for 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
, andJaegerGrpcSpanExporter
are now instrumented withGlobalOpenTelemetry
by default. Instrumentation initializes lazily to prevent ordering issue of accessingGlobalOpenTelemetry.get
beforeGlobalOpenTelemetry.set
is called. (#4993)- Add
ConfigurableSpanExporterProvider
implementation forJaegerGrpcSpanExporter
(#5002) - Add
ConfigurableSpanExporterProvider
,ConfigurableMetricExporterProvider
,ConfigurableLogRecordExporterProvider
forOtlpGrpc{Signal}Exporter
s andOtlpHttp{SignalExporter
s (#5003) - Replace OTLP User-Agent spaces with dashes (#5080)
- Add
AutoConfigurationCustomizerProvider
implementation forPrometheusHttpServer
(#5053) - Add resource
target_info
and scopetarget_info
metrics toPrometheusHttpServer
in 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_trace
are deprecated. Usealways_off
,always_on
,trace_based
instead. (#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-aws
has 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.x
as needed. The latestopentelemetry-bom
will 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}ExporterProvider
implementations forLogging{Signal}Exporter
s (#4950) - Add
ConfigurableSpanExporterProvider
implementation forZipkinSpanExporter
(#4991) - Add
Configurable{Signal}ExporterProvider
implementations forOtlpJsonLogging{Signal}Exporter
s (#4992) ZipkinSpanExporter
populates 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.NoopSpan
correctly (#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
ComponentRegistry
that producesConcurrentModificationException
when reading metrics at the same time as obtaining a meter. (#4951)
Version 1.20.0
API
- Fix bug in
W3CBaggagePropagator
that caused+
characters to be decoded as whitespace
API Extensions
- DEPRECATION: the
opentelemetry-extension-aws
module containing variousAwsXrayPropagator
implementations 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
JcTools
queue 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
toString
toAbstractInstrument
. (#4833) - Add zero bucket boundary to default explicit bucket histogram aggregation. (#4819)
Logs
- Optimize log hot path, reducing allocations significantly. (#4913)
- BREAKING: Add
Context
argument toLogRecordProcessor#onEmit
. (#4889)
Exporter
OtlpLogging{Signal}Exporter
s encode enums as numbers. (#4783)- Add
User-Agent
header ofOTel OTLP Exporter Java/{version}
to OTLP export requests. (#4784)
SDK Extensions
- WARNING:
opentelemetry-sdk-extension-aws
has 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.x
as needed. The latestopentelemetry-bom
will point to the latest published version, currently1.19.0
. (#4830) - WARNING:
opentelemetry-sdk-extension-resources
has 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.x
as needed. The latestopentelemetry-bom
will point to the latest published version, currently1.19.0
. (#4828) - Add autoconfigure support for
BatchLogRecordProcessor
. (#4811) - Autoconfigure performs percent decoding on
otel.resource.attributes
values. (#4653) - Unify compression configuration for exporters including (#4775): * Fix handling of
none
in OTLP exporters. * AddJaegerGrpcSpanExporterBuilder#setCompression(String)
. * AddZipkinSpanExporterBuilder#setCompression(String)
.
Semantic Conventions
- Add migration notes to deprecated attributes (#4840)
OpenTracing Shim
- Use
opentracing-shim
as 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-bom
as a dependency toopentelemetry-bom-alpha
, ensuring synchronization between alpha and stable artifact versions.
API
API Extensions
- WARNING:
opentelemetry-extension-annotations
has 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.x
as needed. The latestopentelemetry-bom
will 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
SdkLogEmitterProvider
toSdkLoggerProvider
.OpenTelemetrySdkBuilder#setLogEmitterProvider
has changed toOpenTelemetrySdkBuilder#setLoggerProvider
.OpenTelemetrySdk#getSdkLogEmitterProvider
has changed toOpenTelemetrySdk#getSdkLoggerProvider
.AutoConfigurationCustomizer#addLogEmitterProviderCustomizer
has changed toAutoConfigurationCustomizer#addLoggerProviderCustomizer
. - BREAKING: Rename
LogEmitter
toLogger
. - BREAKING: Rename
LogExporter
toLogRecordExporter
.SystemOutLogExporter
has changed toSystemOutLogRecordExporter
.OtlpJsonLoggingLogExporter
has changed toOtlpJsonLoggingLogRecordExporter
.OtlpHttpLogExporter
has changed toOtlpHttpLogRecordExporter
.OtlpGrpcLogExporter
has changed toOtlpGrpcLogRecordExporter
.InMemoryLogExporter
has changed toInMemoryLogRecordExporter
. ConfigurableLogExporterProviderhas changed to
ConfigurableLogRecordExporterProvider`. - BREAKING: Rename
LogData
toLogRecordData
.TestLogData
has changed toTestLogRecordData
. - BREAKING: Rename
LogProcessor
toLogRecordProcessor
.BatchLogProcessor
has changed toBatchLogRecordProcessor
.SimpleLogProcessor
has 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)OpenTelemetrySdk
with noop tracing, metric and logging providers. The same minimal instance is set toGlobalOpenTelemetry
. The now deprecated propertyotel.experimental.sdk.enabled
will continue to work in the same way during a transition period. - Fix
ProcessResource
directory separator to use/
or\
instead of:
or;
. - DEPRECATION: the
opentelemetry-sdk-extension-resource
module containing variousResourceProvider
implementations 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-aws
module containing AWSResourceProvider
implementations 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
InstrumentationScopeInfo
accessible 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-logs
by changing fromio.opentelemetry.sdk.extension.logging
toio.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
ZipkinSpanExporter
viaZipkinSpanExporterBuilder#setLocalIpAddressSupplier(Supplier<InetAddress>)
. - Upgrade to OTLP protobuf version 0.19.0.
- OTLP exporters now serialize
InstrumentationScopeInfo#getAttributes()
. - Stop publishing
opentelemetry-exporter-jaeger-proto
. Theopentelemetry-bom
will 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-zpages
merged intoopentelemetry-sdk-extension-incubator
. - BREAKING: Move
opentelemetry-sdk-extension-jfr-events
to opentelemetry-java-contrib/jfr-events. It will now be published under the coordinatesio.opentelemetry.contrib:opentelemetry-jfr-events:{version}
. - BREAKING: Move
opentelemetry-extension-noop-api
to 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.id
detection when using k8s with containerd v1.5.0+. - Add experimental
ConditionalResourceProvider
SPI, for conditionally applying resource providers based on current config and resource.
Micrometer shim
- BREAKING: Move
opentelemetry-micrometer1-shim
to 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