Skip to content

Releases: open-telemetry/opentelemetry-java

Version 1.25.0

07 Apr 14:47
cea8cf1
Compare
Choose a tag to compare

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

  • Fix marshaler self suppression error (#5318)
  • Add sdk dependency to Logging OTLP exporter (#5291)

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. Use BASE2_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

10 Mar 17:26
05b6dfa
Compare
Choose a tag to compare

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

  • Introduce mTLS support for JaegerRemoteSamplerBuilder (#5209) (#5248)

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

15 Feb 20:43
49577ff
Compare
Choose a tag to compare

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

10 Feb 20:35
a295066
Compare
Choose a tag to compare

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 of Aggregation.base2ExponentialBucketHistogram() for histogram instruments. If using OTLP exporter with autoconfigure, set OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION=BASE2_EXPONENTIAL_BUCKET_HISTOGRAM. If using configuring OTLP programatically, use Otlp*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() to Aggregation. (#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. Use always_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 into opentelemetry-sdk-testing. Stop publishing opentelemetry-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 and MetricAssert (#5160)

Semantic Conventions

OpenTracing Shim

  • Refactor to remove internal objects BaseShimObject and TelemetryInfo (#5087)
  • WARNING: Minimize public surface area of OpenTracingShim. Remove createTracerShim() , createTracerShim(Tracer), createTracerShim(Tracer, OpenTracingPropagators). Add createTracerShim(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

06 Jan 15:16
fbeb0d8
Compare
Choose a tag to compare

API

  • WARNING: GlobalOpenTelemetry trigger of autoconfiguration is now opt-in. Previously, GlobalOpenTelemetry.get triggered autoconfiguration if opentelemetry-sdk-extension-autoconfigure was detected on the classpath. That behavior is now opt-in by setting environment variable OTEL_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, and JaegerGrpcSpanExporter are now instrumented with GlobalOpenTelemetry by default. Instrumentation initializes lazily to prevent ordering issue of accessing GlobalOpenTelemetry.get before GlobalOpenTelemetry.set is called. (#4993)
  • Add ConfigurableSpanExporterProvider implementation for JaegerGrpcSpanExporter (#5002)
  • Add ConfigurableSpanExporterProvider, ConfigurableMetricExporterProvider, ConfigurableLogRecordExporterProvider for OtlpGrpc{Signal}Exporters and OtlpHttp{SignalExporters (#5003)
  • Replace OTLP User-Agent spaces with dashes (#5080)
  • Add AutoConfigurationCustomizerProvider implementation for PrometheusHttpServer (#5053)
  • Add resource target_info and scope target_info metrics to PrometheusHttpServer 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. Use always_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

09 Dec 20:02
7105876
Compare
Choose a tag to compare

API

API Extensions

  • WARNING: opentelemetry-extension-aws has been removed following its relocation to opentelemetry-java-contrib/aws-xray-propagator, which is published under coordinates io.opentelemetry.contrib:opentelemetry-aws-xray-propagator:{version}. We will push security patches to 1.20.x as needed. The latest opentelemetry-bom will point to the latest published version, currently 1.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 for Logging{Signal}Exporters (#4950)
  • Add ConfigurableSpanExporterProvider implementation for ZipkinSpanExporter (#4991)
  • Add Configurable{Signal}ExporterProvider implementations for OtlpJsonLogging{Signal}Exporters (#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

  • Update semantic and resource attributes for spec v0.16.0 (#4938, #5033)

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

15 Nov 20:25
cf5329e
Compare
Choose a tag to compare

This is a patch release on the previous 1.20.0 release, fixing the issue(s) below.

Bugfixes

  • Fix bug in ComponentRegistry that produces ConcurrentModificationException when reading metrics at the same time as obtaining a meter. (#4951)

Version 1.20.0

11 Nov 19:23
6de8e97
Compare
Choose a tag to compare

API

  • Fix bug in W3CBaggagePropagator that caused + characters to be decoded as whitespace . (#4898)

API Extensions

  • DEPRECATION: the opentelemetry-extension-aws module containing various AwsXrayPropagator 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 coordinates io.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 to AbstractInstrument. (#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 to LogRecordProcessor#onEmit. (#4889)

Exporter

  • OtlpLogging{Signal}Exporters encode enums as numbers. (#4783)
  • Add User-Agent header of OTel 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 coordinates io.opentelemetry.contrib:opentelemetry-aws-resources:{version}. We will push security patches to 1.19.x as needed. The latest opentelemetry-bom will point to the latest published version, currently 1.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 coordinates io.opentelemetry.instrumentation:opentelemetry-resources:{version}. We will push security patches to 1.19.x as needed. The latest opentelemetry-bom will point to the latest published version, currently 1.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. * Add JaegerGrpcSpanExporterBuilder#setCompression(String). * Add ZipkinSpanExporterBuilder#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

07 Oct 14:34
f912f82
Compare
Choose a tag to compare

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 to opentelemetry-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 coordinates io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:{version}. We will push security patches to 1.18.x as needed. The latest opentelemetry-bom will point to the latest published version, currently 1.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 to SdkLoggerProvider. OpenTelemetrySdkBuilder#setLogEmitterProvider has changed to OpenTelemetrySdkBuilder#setLoggerProvider. OpenTelemetrySdk#getSdkLogEmitterProvider has changed to OpenTelemetrySdk#getSdkLoggerProvider. AutoConfigurationCustomizer#addLogEmitterProviderCustomizer has changed to AutoConfigurationCustomizer#addLoggerProviderCustomizer.
  • BREAKING: Rename LogEmitter to Logger.
  • BREAKING: Rename LogExporter to LogRecordExporter. SystemOutLogExporter has changed to SystemOutLogRecordExporter. OtlpJsonLoggingLogExporter has changed to OtlpJsonLoggingLogRecordExporter. OtlpHttpLogExporter has changed to OtlpHttpLogRecordExporter. OtlpGrpcLogExporter has changed to OtlpGrpcLogRecordExporter. InMemoryLogExporter has changed to InMemoryLogRecordExporter. ConfigurableLogExporterProviderhas changed toConfigurableLogRecordExporterProvider`.
  • BREAKING: Rename LogData to LogRecordData. TestLogData has changed to TestLogRecordData.
  • BREAKING: Rename LogProcessor to LogRecordProcessor. BatchLogProcessor has changed to BatchLogRecordProcessor. SimpleLogProcessor has changed to SimpleLogRecordProcessor.

Exporter

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 to GlobalOpenTelemetry. The now deprecated property otel.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 various ResourceProvider 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 coordinates io.opentelemetry.instrumentation:opentelemetry-resources:{version}.
  • DEPRECATION: the opentelemetry-sdk-extension-aws module containing AWS ResourceProvider 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 coordinates io.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

09 Sep 19:14
7b9f9f3
Compare
Choose a tag to compare

SDK

  • Added scope attributes to InstrumentationScopeInfo accessible via InstrumentationScopeInfo#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 of InstrumentationScopeInfo#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 from io.opentelemetry.sdk.extension.logging to io.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 via ZipkinSpanExporterBuilder#setLocalIpAddressSupplier(Supplier<InetAddress>).
  • Upgrade to OTLP protobuf version 0.19.0.
  • OTLP exporters now serialize InstrumentationScopeInfo#getAttributes().
  • Stop publishing opentelemetry-exporter-jaeger-proto. The opentelemetry-bom will include a constraint on the last published version 1.17.0. If security issues are discovered, patches will be published to 1.17.x.

SDK Extensions

  • BREAKING: opentelemetry-sdk-extension-metric-incubator, opentelemetry-sdk-extension-tracing-incubator, and opentelemetry-sdk-extension-zpages merged into opentelemetry-sdk-extension-incubator.
  • BREAKING: Move opentelemetry-sdk-extension-jfr-events to opentelemetry-java-contrib/jfr-events. It will now be published under the coordinates io.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 coordinates io.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, and aws.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

๐Ÿ™‡ 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