v1.30.0 release
Release of:
- opentelemetry-api
- opentelemetry-sdk
- exporter packages
Security fixes
- [SECURITY] Fix baggage metadata injection and reject unsafe curl headers
GHSA-j5cq-83xw-rx48- Reject invalid baggage metadata during extraction and injection.
- After the existing trimming of leading and trailing whitespace, members
containing raw control bytes other than permitted HTAB are dropped. - Members with empty metadata properties (
;;or a trailing;), non-token
property keys, or non-ASCII metadata are also dropped. Baggage::Set()rejects invalid metadata without replacing
existing entries or adding new ones.- The curl client now fails the whole request for non-token header names or
header values containing control bytes other than HTAB, or DEL. - This includes configured exporter headers.
- Applications must recompile to receive the header-only baggage fix,
using API headers from opentelemetry-cpp 1.30.0 (or later)
Breaking changes
-
[SDK] Allow context construction failures to propagate
#4703- Remove
noexceptfrom the publicTracerContext,LoggerContext,
andMeterContextconstructors so allocation failures propagate
to provider initialization callers instead of terminating. - This changes their exception contract and may affect
code relying on nothrow construction.
- Remove
-
[SDK] Handle instrumentation object construction failures safely
#4469- Removed
noexceptfrom the public SDKTracerProvider,
LoggerProvider,MeterProvider,Tracer,Logger, andMeter
constructors so initialization failures can propagate to callers. GetTracer,GetLogger, andGetMeterremainnoexceptand return a
pre-allocated noop object if constructing a new instrumentation object
fails.- After the first failure, later uncached
Get*calls return the same
noop immediately without retrying construction. Existing cached objects
continue to be returned.
- Removed
-
[REMOVAL] Remove WITH_OTLP_RETRY_PREVIEW
#4668- CMake flags WITH_OTLP_RETRY_PREVIEW is removed,
the feature is no longer in preview status.
- CMake flags WITH_OTLP_RETRY_PREVIEW is removed,
-
[API] Remove opentelemetry::plugin
#4660- The unused opentelemetry::plugin framework is removed.
-
[REMOVAL] Remove WITH_OTLP_GRPC_SSL_MTLS_PREVIEW
#4666- CMake flags WITH_OTLP_GRPC_SSL_MTLS_PREVIEW is removed,
the feature is no longer in preview status.
- CMake flags WITH_OTLP_GRPC_SSL_MTLS_PREVIEW is removed,
-
[CODE HEALTH] Fix bugprone-exception-escape in NoopTracer::StartSpan()
#4673- The NoopSpan class in the API has changed.
- For applications only instrumenting code, this has no impact,
as this class is not used for instrumentation. - For applications implementing a custom trace exporter,
the exporter implementation needs to be adjusted,
when using the NoopSpan.
Important changes
- [API] Preserve parent SpanContext in NoopTracer spans
#4717- When a valid parent span context is present, StartSpan() now
returns a non recording span referencing the parent,
instead of a NoopSpan as before. - This is the behavior required by the specification,
to avoid breaking traces when code is instrumented but traces
are disabled. - Because this fix is in the header only API,
instrumented code must be compiled again using API headers
from opentelemetry-cpp 1.30.0 (or later), so see the benefits of this fix. - Instrumentation compiled with older API headers and linked with
the SDK from opentelemetry-cpp 1.30 (or later) will not see the fix,
causing traces to break.
- When a valid parent span context is present, StartSpan() now
What's Changed
- [RELEASE] Bump main branch to 1.30.0-dev by @marcalff in #4563
- [BENCHMARK] Add probability and composite sampler benchmarks by @dbarker in #4569
- [API] Remove regex from trace_state.h by @dbarker in #4570
- [SDK] Fix span-limit compilation on 32-bit platforms by @ThomsonTan in #4573
- [CODE HEALTH] Fix typos in comments and docs by @Anish701 in #4572
- Bump curl from 8.21.0.bcr.1 to 8.21.0.bcr.2 by @dependabot[bot] in #4578
- Bump github/codeql-action/init from 4.37.9 to 4.38.0 by @dependabot[bot] in #4577
- [BENCHMARK] Add cases for nested spans and multiple tracestate keys by @dbarker in #4576
- [SDK] Add missing cstdint include to predicate_factory.h by @om7057 in #4574
- [BUG] Fix random attribute selection in metrics foo example by @Anish701 in #4585
- [CODE HEALTH] Add missing include in aggregation_config.h by @brechtsanders in #4567
- chore: Add renovate configuration by @thompson-tomo in #4568
- Pin otel/cpp_format_tools Docker tag to 45d4342 by @renovate[bot] in #4588
- Update dependency rules_cc to v0.2.25 by @renovate[bot] in #4590
- ci: finish switch to renovate by @thompson-tomo in #4593
- ci: pin runner images by @thompson-tomo in #4594
- Update dependency rules_foreign_cc to v0.16.0 by @renovate[bot] in #4592
- Update all [patches] by @renovate[bot] in #4591
- [DEVCONTAINER] Use an Ubuntu 24.04 base image and pin CMake by @dbarker in #4595
- chore: specify image version by @thompson-tomo in #4599
- Update infra [minor] by @renovate[bot] in #4597
- chore: Require approval for major 'docker' updates by @thompson-tomo in #4598
- Update dependency bazel to v8.8.0 by @renovate[bot] in #4605
- Update all [patches] by @renovate[bot] in #4607
- [BAZEL] use default bazel version by @marcalff in #4606
- Update dependency abseil-cpp to v20260526 by @renovate[bot] in #4602
- [BUILD] Build break with bazel for configuration examples by @marcalff in #4611
- Update dependency grpc to v1.84.0 by @renovate[bot] in #4612
- Update dependency googletest to v1.18.0.bcr.1 by @renovate[bot] in #4601
- [API] TraceState::Set overwrites an entry with the same key by @dbarker in #4586
- Update dependency abseil-cpp to v20260817 by @renovate[bot] in #4613
- Update dependency protobuf to v36 by @renovate[bot] in #4615
- Update actions/upload-artifact action to v7 by @renovate[bot] in #4620
- Update otel/opentelemetry-collector Docker tag to v0.161.0 by @renovate[bot] in #4623
- chore: Reset ignorePaths in Renovate configuration by @thompson-tomo in #4626
- Update open-telemetry/shared-workflows action to v0.16.0 by @renovate[bot] in #4628
- Pin python Docker tag to be8ccd0 by @renovate[bot] in #4627
- chore: fix inconsistent format in bug template by @ThomsonTan in #4633
- [LOGS] Fix Logger::EmitLogRecord unsafe static_cast to Recordable by @om7057 in #4624
- [BUG] Send one request per curl session by @thc1006 in #4431
- [BUG] Compare the curl seek offset before narrowing it to size_t by @mateenali66 in #4630
- [BUG] Do not queue a curl session closed by the Retry-After cap by @ThomsonTan in #4632
- Update all [patches] by @renovate[bot] in #4640
- [BUG] Fix a data race on the curl operation's last result code by @thc1006 in #4618
- [BUG] Do not busy-spin the curl background thread while a retry is queued at shutdown by @ThomsonTan in #4637
- chore: fix duplicated and incorrect SpinLockMutex comments by @SyaoranY in #4641
- Update dependency curl to v8.22.0 by @renovate[bot] in #4645
- chore: Move Tom Tan from maintainer to approver by @ThomsonTan in #4644
- [METRICS SDK] Enforce a runtime minimum scale for Base2ExponentialHistogramAggregation by @ThomsonTan in #4353
- [Metrics SDK] Fix spatial re-aggregation for asynchronous instruments by @nikhilbhatia08 in #4635
- Update dependency windows to v2025 by @renovate[bot] in #4648
- Remove duplicate global propagator setup in gRPC client example by @SyaoranY in #4654
- [BUG] Keep the curl retry deadline stable within an attempt by @shixi-li in #4452
- [SDK] Handle instrumentation object construction failures safely by @22elix3r in #4469
- [METRICS SDK] Drop aggregation behaves as a no-op by @dbarker in #4515
- Update all [patches] by @renovate[bot] in #4657
- Update infra [minor] by @renovate[bot] in #4667
- Update all [patches] by @renovate[bot] in #4674
- [REMOVAL] Remove WITH_OTLP_RETRY_PREVIEW by @marcalff in #4668
- [API] Remove opentelemetry::plugin by @marcalff in #4660
- ci: Add dependencies labels to Renovate pr’s by @thompson-tomo in #4675
- Update all [patches] by @renovate[bot] in #4676
- [CODE HEALTH] Prevent std::out_of_range escaping noexcept substr callers by @denizariyan in #4562
- ci: Pin Python base image in Dockerfile by @thompson-tomo in #4677
- [REMOVAL] Remove WITH_OTLP_GRPC_SSL_MTLS_PREVIEW by @marcalff in #4666
- [CMAKE] Clean up pkg-config install methods and add tests by @shashankxrm in #4528
- [CODE HEALTH] Fix clang-tidy bugprone-exception-escape in lastvalue_aggregation.cc by @itu-itis24-iyigun24 in #4564
- [EXPORTER ETW] Fix PropertyValue string conversions that doubled length and ignored string_view size by @Tyagiquamar in #4656
- [SDK] Preserve unlimited batch processor shutdown timeout by @Soundcreates in #4686
- Update all [patches] by @renovate[bot] in #4679
- [CODE HEALTH] Fix bugprone-exception-escape in NoopTracer::StartSpan() by @marcalff in #4673
- [SDK] Move predicate_factory code from header file (#1429) by @mawasak in #4688
- [CI] enable the
bugprone-unhandled-exception-at-newcheck by @dbarker in #4689 - [SDK] Remove false warning from metric reader collect by @dbarker in #4687
- Update python:3.14.8 Docker digest to b9767f5 by @renovate[bot] in #4690
- Update infra [minor] by @renovate[bot] in #4691
- [CODE HEALTH] Fix bugprone-exception-escape in Tracer::StartSpan() by @marcalff in #4672
- [API/BENCHMARK] Trace Propagator Benchmark by @dbarker in #4692
- [CI] Add help for IWYU and clang-tidy. by @marcalff in #4698
- [SDK] Release provider locks before construction-failure diagnostics by @22elix3r in #4702
- Update python:3.14.8 Docker digest to 12d187a by @renovate[bot] in #4705
- [ADMIN] Add Mateen Anjum as approver by @mateenali66 in #4699
- [SDK] Allow context construction failures to propagate by @22elix3r in #4703
- Update infra [minor] by @renovate[bot] in #4708
- [API] Optimize trace propagators by @dbarker in #4696
- [SDK] BatchSpanProcessor: wait for a full batch instead of draining partial batches by @yswdqz in #4466
- [SDK] Fix disabled Tracer StartSpan noop behavior by @dbarker in #4710
- [SDK] Remove TracerConfig copy from Tracer by @dbarker in #4712
- Update infra [minor] by @renovate[bot] in #4714
- Update all [patches] by @renovate[bot] in #4716
- [API] Preserve parent SpanContext in NoopTracer spans by @Syedowais312 in #4717
- [API/SDK] Add ASCII helpers and remove regex from InstrumentMetaDataValidator by @ltowarek in #4715
- [SDK] Support MeterConfigurator updates and example by @adityabavadekar in #4313
- Update step-security/harden-runner action to v2.22.2 by @renovate[bot] in #4720
- Update all [patches] by @renovate[bot] in #4723
- [CODE HEALTH] Fix misc-use-internal-linkage warning by @marcalff in #4724
- [SECURITY] Fix baggage metadata injection and reject unsafe curl headers by @lalitb in
GHSA-j5cq-83xw-rx48 - [RELEASE] Release opentelemetry-cpp 1.30.0 by @marcalff in #4722
New Contributors
- @brechtsanders made their first contribution in #4567
- @renovate[bot] made their first contribution in #4588
- @SyaoranY made their first contribution in #4641
- @22elix3r made their first contribution in #4469
- @itu-itis24-iyigun24 made their first contribution in #4564
- @Tyagiquamar made their first contribution in #4656
- @Soundcreates made their first contribution in #4686
- @mawasak made their first contribution in #4688
- @yswdqz made their first contribution in #4466
- @Syedowais312 made their first contribution in #4717
- @adityabavadekar made their first contribution in #4313
Full Changelog: v1.29.0...v1.30.0