This release targets the OpenTelemetry SDK 1.63.0.
Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they will continue to have breaking changes. Please see VERSIONING.md for more details.
⚠️ Breaking changes to non-stable APIs
- Change the return type for
JmxTelemetry.start(...)APIs. (#18782) - Experimental runtime package telemetry now emits
package.checksum_algorithm=SHA-256and 64-characterpackage.checksumvalues instead of SHA1 checksums. (#18846)
🚫 Deprecations
- Rename the common logging context keys to
otel.instrumentation.common.logging.trace-id-key,otel.instrumentation.common.logging.span-id-key, andotel.instrumentation.common.logging.trace-flags-key, while keeping the old property names deprecated. (#18851) - Rename the
kafka-brokerandkafka-connectJMX target systems toexperimental-kafka-brokerandexperimental-kafka-connect; the old names still work for now and log a warning. (#18971)
🌟 New javaagent instrumentation
- Add SOFARPC 5.4 instrumentation that emits RPC client and server spans and metrics. (#15589)
- Add Javaagent instrumentation for HBase client 2.0.0 through 2.5.0. (#18253)
📈 Enhancements
- Add opt-in support for emitting HTTP request exceptions as log signals with
otel.semconv.exception.signal.preview=logs. (#16259) - Add
opentelemetry-api-1.63Javaagent instrumentation for OpenTelemetry API 1.63 andopentelemetry-api-incubator1.63. (#18911) - Add
otel.semconv-stability.v3-previewas a fallback for the declarativev3_previewsemconv stability setting. (#18936) - Update the experimental stable database semantic-convention opt-in (
otel.semconv-stability.opt-in=database) across database instrumentations, including span names anddb.*attributes. (#18808, #18853, #18920, #18922, #18926, #18930, #18970, #18979, #18980, #18984, #18985, #18986, #18987, #18989, #18990, #18992, #18993, #19004, #19005) - Capture query text and parameterization for Cassandra batch statements. (#18964)
- Keep
opentelemetry-apiandopentelemetry-instrumentation-annotationsenabled underotel.instrumentation.common.v3-previeweven whendefault-enabled=false. (#18792) - When
otel.instrumentation.common.v3-previewis enabled, affected instrumentations emituser.*identity attributes instead ofenduser.*ones. (#18795) - Disable Kafka client metrics by default when
otel.instrumentation.common.v3-preview=true. (#18828) - Recognize Amazon Aurora DSQL and AWS wrapper JDBC URL prefixes when parsing JDBC connection metadata. (#18831)
- Set instrumentation versions on emitted Meter scopes. (#18866)
- Run
@WithSpaninstrumentation after other instrumentations so other advice can attach attributes to the active span. (#18874) - Emit database client failures as
db.client.operation.exceptionlogs whenotel.semconv.exception.signal.previewis enabled. (#18889) - Emit RPC exceptions as log records when
otel.semconv.exception.signal.preview=logsis enabled. (#18890) - Emit messaging exceptions as log records under
otel.semconv.exception.signal.preview. (#18891) - Emit
faas.invocation.exceptionlog records for FaaS exceptions whenotel.semconv.exception.signal.preview=logsis enabled. (#18892) - Emit
gen_ai.client.operation.exceptionlogs for OpenAI chat and embeddings failures whenotel.semconv.exception.signal.preview=logsis enabled. (#18893) - Emit AWS SDK request failures as
rpc.client.call.exceptionlog records whenotel.semconv.exception.signal.preview=logsis enabled. (#18894) - Declarative configuration now supports per-domain semantic-convention selection using
semconv.version,semconv.experimental, andsemconv.dual_emitsettings. (#18908) - When
otel.instrumentation.common.v3-previewis enabled, useotel.semconv-stability.previewinstead ofotel.semconv-stability.opt-into opt in to the nonstableservice.peerandrpcsemantic conventions. (#18914) - Disable Kotlin coroutines
@WithSpaninstrumentation by default whenotel.instrumentation.common.v3-preview=true. (#18919) - Use the summary-aware path in
SqlQueryAnalyzer.analyze()whenotel.instrumentation.common.v3-previewis enabled. (#18921) - When
otel.instrumentation.common.v3-previewis enabled, deprecated JDBC/db sanitization config names are ignored in favor ofdb.query_sanitization.enabled. (#18934) - Include
jvm.gc.causeon GC duration metrics whenotel.instrumentation.common.v3-previewis enabled. (#18967) - Emit duration metrics for JDBC transaction operations
COMMITandROLLBACK. (#19003) - Use a generated
InstrumentationVersionclass in OkHttp 3.0 instead of reading embedded version properties, avoiding Android StrictMode disk-read violations. (#19006) - Add thread details span attributes for declarative Spring starter configuration when
distribution.spring_starter.thread_details_enabledis set. (#19008)
🛠️ Bug fixes
- Preserve the current context for Redisson command execution futures so async operations continue the active trace. (#18701)
- Stop the Pulsar agent from creating duplicate receive spans for multi-topic consumers. (#18771)
- Fix a hang in Ktor client streaming requests so spans end promptly with Ktor 3.5.0. (#18781)
- Fix a
BedrockconverseStreamNullPointerExceptionwhen a tool call has empty arguments. (#18783) - Capture the Pulsar message ID earlier so producer spans can record it reliably. (#18803)
- Fix SQLite JDBC statement and prepared-statement instrumentation so SQLite connections produce SQL spans and parameter capture. (#18885)
- Fix Logback MDC declarative configuration keys so
otel.instrumentation/development.java.*settings apply correctly. (#18924) - Fix SQL password sanitization for mixed-case DDL targets like
create tableandalter table. (#18927) - Logs emitted through async Log4j loggers now keep the application thread's OpenTelemetry
Contextinstead of falling back to span-only recovery. (#18937) - Avoid instrumentation errors when loading
redis.clients.jedis.Jedis,BinaryJedis, andUnifiedJedis. (#19000) - Run OpenSearch async callbacks with the request's parent context. (#19027)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@amccague
@anuraaga
@breedx-splk
@chlos
@Cirilla-zmh
@Deafaibrahim
@dengliming
@fangxiu-wf
@iblancasa
@jack-berg
@jakob-o
@jaydeluca
@jkoronaAtCisco
@laurit
@somiljain2006
@stefanopace
@steverao
@SylvainJuge
@tejasae-afk
@trask
@typat
@vikinghawk
@YaoYingLong
@zeitlinger