API
- Deprecate
TextMapGetter.keys()and makeTextMapGettera functional interface (#8531) - Add null guards and API usage logging for tracing, baggage, attributes, logging, and metrics (#8803, #8863, #8864)
- Bound allocations and avoid regex backtracking when parsing W3C
tracestate(#8817, #8914)
Incubating
- Add type introspection methods to
DeclarativeConfigProperties(#8883)
Extensions
- Trace propagators: Bound allocations when parsing Jaeger baggage and B3 single-header propagation (#8817)
SDK
- Run
CompletableResultCodecompletion actions outside internal locks to avoid deadlocks (#8773) - Do not count attribute overwrites as dropped attributes (#8833)
- Avoid regex backtracking in glob matching (#8909)
- Add experimental resource entity support, OTLP export, and configuration through
otel.entitiesand declarative resource detectors (#8464)
Traces
- Return noop tracers when no span processors are configured (#8815)
- Catch
ThrowableinSimpleSpanProcessorandMultiSpanExporter(#8848) - Use
{span}units for span processor self-observability metrics (#8873)
Metrics
- Stabilize
PeriodicMetricReaderBuilder.setMaxExportBatchSize(int)(#8829) - Delete experimental metric attribute / baggage processing (#8818)
- Fix: Reset exemplar span context when a reservoir cell is overwritten outside a span (#8871)
Logs
- Return noop loggers from
SdkLoggerProvider.get()when no log record processors are configured (#8838) - Catch
ThrowableinSimpleLogRecordProcessorandMultiLogRecordExporter(#8848)
Profiles
- Fix
KeyValueAndUnitData.create()to return the publicKeyValueAndUnitDatainterface (#8875)
Exporters
- OTLP: Fix missing request size limits, defaulting to 64 MiB, configurable through
setMaxRequestBodySize(long)andsetMaxRequestMessageSize(long)and through declarative configOtlpGrpcExporter,OtlpHttpExporter(see full schema docs here) (#8446) - OTLP: Reduce failure logs to
FINEafter shutdown (#8819) - OTLP: retry gRPC based on response status codes in trailer headers (#8854)
- Prometheus: Avoid regex backtracking when removing unit annotations (#8910)
Extensions
- Autoconfigure: Stabilize
ServiceInstanceIdResourceProviderand generateservice.instance.idby default (#8770) - Autoconfigure: Preserve unencoded non-ASCII characters when decoding resource attributes (#8893)
- Autoconfigure: Add missing artifact hints for
experimental-otlp/stdoutspan and metric exporters (#8897) - Declarative config: Update to schema v1.2.0 and support the
always_recordsampler (#8801) - Declarative config: Ignore resource attributes with null values (#8889)
- Declarative config: Match array attributes element-wise in the
rule_basedsampler (#8895) - Jaeger remote sampler: Reduce failure logs to
FINEafter shutdown (#8819) - Jaeger remote sampler: Preserve per-operation sampling strategies when the rate limit is zero (#8888)
- Incubator: Make
OnEndSpanProcessor.create()public (#8892) - Incubator: Fix the class name in
ComposableProbabilitySamplerdescriptions (#8891)
Testing
- Fix assertion failure messages reporting the wrong value or type (#8872)
Shims
- OpenCensus: Skip W3C multi-tenant
tracestatekeys when converting spans (#8810) - OpenTracing: Propagate baggage to the parent context in
SpanBuilderShim(#8812)
Project tooling
- Kotlin extension: Raise the minimum Kotlin version to 2.2 (#8804)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@adhamahmad
@ADITYA-CODE-SOURCE
@amit306
@AndresBena19
@anjeongkyun
@arnabnandy7
@cfredri4
@codedbyadiiii
@colamong
@dashpole
@efegokdemir
@EvgeniiR
@gfelbing
@jack-berg
@jaydeluca
@jkwatson
@JnRouvignac
@johnbley
@jsuereth
@kevinburkesegment
@Oberon00
@opentelemetry-pr-dashboard
@opentelemetrybot
@psx95
@Rajkaran-122
@rooks-ns
@rotscher
@saivarun1410
@thswlsqls
@trask
@Vicky677
@zeitlinger