Skip to content
This repository was archived by the owner on May 29, 2026. It is now read-only.

Update opentelemetry-rust monorepo#498

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/opentelemetry-rust-monorepo
Open

Update opentelemetry-rust monorepo#498
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/opentelemetry-rust-monorepo

Conversation

@renovate

@renovate renovate Bot commented Jul 3, 2024

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Type Update Change
opentelemetry (source) workspace.dependencies minor 0.21.0 -> 0.29.0
opentelemetry-jaeger (source) workspace.dependencies minor 0.20.0 -> 0.22.0
opentelemetry_sdk (source) workspace.dependencies minor 0.21.2 -> 0.29.0

Release Notes

open-telemetry/opentelemetry-rust (opentelemetry)

v0.29.0

Compare Source

Released 2025-Mar-21

  • Breaking Moved ExportError trait from opentelemetry::trace::ExportError to opentelemetry_sdk::export::ExportError
  • Breaking Moved TraceError enum from opentelemetry::trace::TraceError to opentelemetry_sdk::trace::TraceError
  • Breaking Moved TraceResult type alias from opentelemetry::trace::TraceResult to opentelemetry_sdk::trace::TraceResult
  • Bug Fix: InstrumentationScope implementation for PartialEq and Hash fixed to include Attributes also.
  • Breaking changes for baggage users: #​2717
    • Changed value type of Baggage from Value to StringValue
    • Updated Baggage constants to reflect latest standard (MAX_KEY_VALUE_PAIRS - 180 -> 64, MAX_BYTES_FOR_ONE_PAIR - removed) and increased insert performance see #2284.
    • Align Baggage.remove() signature with .get() to take the key as a reference
    • Baggage can't be retrieved from the Context directly anymore and needs to be accessed via context.baggage()
    • with_baggage() and current_with_baggage() override any existing Baggage in the Context
    • Baggage keys can't be empty and only allow ASCII visual chars, except "(),/:;<=>?@&#8203;[\]{} (see RFC7230, Section 3.2.6)
    • KeyValueMetadata does not publicly expose its fields. This should be transparent change to the users.
  • Changed Context to use a stack to properly handle out of order dropping of ContextGuard. This imposes a limit of 65535 nested contexts on a single thread. See #2378 and #1887.
  • Added additional name: Option<&str> parameter to the event_enabled method
    on the Logger trait. This allows implementations (SDK, processor, exporters)
    to leverage this additional information to determine if an event is enabled.

v0.28.0

Compare Source

Released 2025-Feb-10

  • Bump msrv to 1.75.0.
  • Breaking opentelemetry::global::shutdown_tracer_provider() Removed from this crate, should now use tracer_provider.shutdown() see #​2369 for a migration example.
  • Breaking Removed unused opentelemetry::PropagationError struct.

v0.27.1

Compare Source

Released 2024-Nov-27

v0.27.0

Compare Source

Released 2024-Nov-11

  • Bump MSRV to 1.70 #​2179
  • Add LogRecord::set_trace_context; an optional method conditional on the trace feature for setting trace context on a log record.
  • Removed unnecessary public methods named as_any from AsyncInstrument trait and the implementing instruments: ObservableCounter, ObservableGauge, and ObservableUpDownCounter #​2187
  • Introduced SyncInstrument trait to replace the individual synchronous instrument traits (SyncCounter, SyncGauge, SyncHistogram, SyncUpDownCounter) which are meant for SDK implementation. #​2207
  • Ensured that observe method on asynchronous instruments can only be called inside a callback. This was done by removing the implementation of AsyncInstrument trait for each of the asynchronous instruments. #​2210
  • Removed PartialOrd and Ord implementations for KeyValue. #​2215
  • Breaking change for exporter authors: Marked KeyValue related structs and enums as non_exhaustive. #​2228
  • Breaking change for log exporter authors: Marked AnyValue enum as non_exhaustive. #​2230
  • Breaking change for Metrics users: The init method used to create instruments has been renamed to build. Also, try_init() method is removed from instrument builders. The return types of InstrumentProvider trait methods modified to return the instrument struct, instead of Result. #​2227

Before:

let counter = meter.u64_counter("my_counter").init();

Now:

let counter = meter.u64_counter("my_counter").build();
  • Breaking change: #​2220

    • Removed deprecated method InstrumentationLibrary::new
    • Renamed InstrumentationLibrary to InstrumentationScope
    • Renamed InstrumentationLibraryBuilder to InstrumentationScopeBuilder
    • Removed deprecated methods LoggerProvider::versioned_logger and TracerProvider::versioned_tracer
    • Removed methods LoggerProvider::logger_builder, TracerProvider::tracer_builder and MeterProvider::versioned_meter
    • Replaced these methods with LoggerProvider::logger_with_scope, TracerProvider::logger_with_scope, MeterProvider::meter_with_scope
    • Replaced global::meter_with_version with global::meter_with_scope
    • Added global::tracer_with_scope
    • Refer to PR description for migration guide.
  • Breaking change: replaced InstrumentationScope public attributes by getters #​2275

  • Breaking change: #​2260

    • Removed global::set_error_handler and global::handle_error.
    • global::handle_error usage inside the opentelemetry crates has been replaced with global::otel_info, otel_warn, otel_debug and otel_error macros based on the severity of the internal logs.
    • The default behavior of global::handle_error was to log the error using eprintln!. With otel macros, the internal logs get emitted via tracing macros of matching severity. Users now need to configure a tracing layer/subscriber to capture these logs.
    • Refer to PR description for migration guide. Also refer to self-diagnostics example to learn how to view internal logs in stdout using tracing::fmt layer.
  • Breaking change for exporter/processor authors: #​2266

    • Moved ExportError trait from opentelemetry::ExportError to opentelemetry_sdk::export::ExportError
    • Created new trait opentelemetry::trace::ExportError for trace API. This would be eventually be consolidated with ExportError in the SDK.
    • Moved LogError enum from opentelemetry::logs::LogError to opentelemetry_sdk::logs::LogError
    • Moved LogResult type alias from opentelemetry::logs::LogResult to opentelemetry_sdk::logs::LogResult
    • Moved MetricError enum from opentelemetry::metrics::MetricError to opentelemetry_sdk::metrics::MetricError
    • Moved MetricResult type alias from opentelemetry::metrics::MetricResult to opentelemetry_sdk::metrics::MetricResult
      These changes shouldn't directly affect the users of OpenTelemetry crate, as these constructs are used in SDK and Exporters. If you are an author of an sdk component/plug-in, like an exporter etc. please use these types from sdk. Refer CHANGELOG.md for more details, under same version section.
  • Breaking 2291 Rename logs_level_enabled flag to spec_unstable_logs_enabled. Please enable this updated flag if the feature is needed. This flag will be removed once the feature is stabilized in the specifications.

v0.26.0

Compare Source

Released 2024-Sep-30

  • BREAKING Public API changes:

    • Removed: Key.bool(), Key.i64(), Key.f64(), Key.string(), Key.array() #​2090. These APIs were redundant as they didn't offer any additional functionality. The existing KeyValue::new() API covers all the scenarios offered by these APIs.

    • Removed: ObjectSafeMeterProvider and GlobalMeterProvider #​2112. These APIs were unnecessary and were mainly meant for internal use.

    • Modified: MeterProvider.meter() and MeterProvider.versioned_meter() argument types have been updated to &'static str instead of impl Into<Cow<'static, str>>> #​2112. These APIs were modified to enforce the Meter name, version, and schema_url to be &'static str.

    • Renamed: NoopMeterCore to NoopMeter

  • Added with_boundaries API to allow users to provide custom bounds for Histogram instruments. #​2135

v0.25.0

Compare Source

  • BREAKING #​1993 Box complex types in AnyValue enum
    Before:
#[derive(Debug, Clone, PartialEq)]
pub enum AnyValue {
    /// An integer value
    Int(i64),
    /// A double value
    Double(f64),
    /// A string value
    String(StringValue),
    /// A boolean value
    Boolean(bool),
    /// A byte array
    Bytes(Vec<u8>),
    /// An array of `Any` values
    ListAny(Vec<AnyValue>),
    /// A map of string keys to `Any` values, arbitrarily nested.
    Map(HashMap<Key, AnyValue>),
}

After:

#[derive(Debug, Clone, PartialEq)]
pub enum AnyValue {
    /// An integer value
    Int(i64),
    /// A double value
    Double(f64),
    /// A string value
    String(StringValue),
    /// A boolean value
    Boolean(bool),
    /// A byte array
    Bytes(Box<Vec<u8>>),
    /// An array of `Any` values
    ListAny(Box<Vec<AnyValue>>),
    /// A map of string keys to `Any` values, arbitrarily nested.
    Map(Box<HashMap<Key, AnyValue>>),
}

So the custom log appenders should box these types while adding them in message body, or
attribute values. Similarly, the custom exporters should dereference these complex type values
before serializing.

Breaking :
#​2015 Removed
the ability to register callbacks for Observable instruments on Meter directly.
If you were using meter.register_callback to provide the callback, provide
them using with_callback method, while creating the Observable instrument
itself.
1715
shows the exact changes needed to make this migration. If you are starting new,
refer to the
examples
to learn how to provide Observable callbacks.

v0.24.0

Compare Source

  • Add "metrics", "logs" to default features. With this, default feature list is
    "trace", "metrics" and "logs".

  • When "metrics" feature is enabled, KeyValue implements PartialEq, Eq,
    PartialOrder, Order, Hash. This is meant to be used for metrics
    aggregation purposes only.

  • Removed Unit struct for specifying Instrument units. Unit is treated as an
    opaque string. Migration: Replace .with_unit(Unit::new("myunit")) with
    .with_unit("myunit").

  • 1869 Introduced the LogRecord::set_target() method in the log bridge API.
    This method allows appenders to set the target/component emitting the logs.

v0.23.0

Compare Source

Added
  • #​1640 Add PropagationError
  • #​1701 Gauge no longer requires otel-unstable feature flag, as OpenTelemetry specification for Gauge instrument is stable.
Removed
  • Remove urlencoding crate dependency. #​1613
  • Remove global providers for Logs $1691
    LoggerProviders are not meant for end users to get loggers from. It is only required for the log bridges.
    Below global constructs for the logs are removed from API:
    - opentelemetry::global::logger
    - opentelemetry::global::set_logger_provider
    - opentelemetry::global::shutdown_logger_provider
    - opentelemetry::global::logger_provider
    - opentelemetry::global::GlobalLoggerProvider
    - opentelemetry::global::ObjectSafeLoggerProvider
    For creating appenders using Logging bridge API, refer to the opentelemetry-tracing-appender example
Changed
  • BREAKING Moving LogRecord implementation to the SDK. 1702.

    • Relocated LogRecord struct to SDK.
    • Introduced the LogRecord trait in the API for populating log records. This trait is implemented by the SDK.
      This is the breaking change for the authors of Log Appenders. Refer to the opentelemetry-appender-tracing for more details.
  • Deprecate versioned_logger() in favor of logger_builder() 1567.

Before:

let logger = provider.versioned_logger(
    "my-logger-name",
    Some(env!("CARGO_PKG_VERSION")),
    Some("https://opentelemetry.io/schema/1.0.0"),
    Some(vec![KeyValue::new("key", "value")]),
);

After:

let logger = provider
    .logger_builder("my-logger-name")
    .with_version(env!("CARGO_PKG_VERSION"))
    .with_schema_url("https://opentelemetry.io/schema/1.0.0")
    .with_attributes(vec![KeyValue::new("key", "value")])
    .build();
  • Deprecate versioned_tracer() in favor of tracer_builder() 1567.

Before:

let tracer = provider.versioned_tracer(
    "my-tracer-name",
    Some(env!("CARGO_PKG_VERSION")),
    Some("https://opentelemetry.io/schema/1.0.0"),
    Some(vec![KeyValue::new("key", "value")]),
);

After:

let tracer = provider
    .tracer_builder("my-tracer-name")
    .with_version(env!("CARGO_PKG_VERSION"))
    .with_schema_url("https://opentelemetry.io/schema/1.0.0")
    .with_attributes(vec![KeyValue::new("key", "value")])
    .build();

v0.22.0

Compare Source

Added
  • #​1410 Add experimental synchronous gauge. This is behind the feature flag, and can be enabled by enabling the feature otel_unstable for opentelemetry crate.

  • #​1410 Guidelines to add new unstable/experimental features.

Changed
  • Modified AnyValue.Map to be backed by HashMap instead of custom OrderMap,
    which internally used IndexMap. There was no requirement to maintain the order
    of entries, so moving from IndexMap to HashMap offers slight performance
    gains, and avoids IndexMap dependency. This affects body and attributes of
    LogRecord.
    #​1353
  • Add TextMapCompositePropagator #​1373
  • Turned off events for NoopLogger to save on operations
    #​1455
Removed
  • Removed OrderMap type as there was no requirement to use this over regular
    HashMap.
    #​1353
  • Remove API for Creating Histograms with signed integers. #​1371
  • Remove global::shutdown_meter_provider, use SdkMeterProvider::shutdown
    directly instead #​1412.
open-telemetry/opentelemetry-rust (opentelemetry-jaeger)

v0.22.0

Compare Source

API

Added

Changed

Removed

SDK

Deprecated
  • XrayIdGenerator in the opentelemetry-sdk has been deprecated and moved to version 0.10.0 of the opentelemetry-aws crate.
Added
  • #​1410 Add experimental synchronous gauge

  • #​1471 Configure batch log record processor via OTEL_BLRP_* environment variables and via OtlpLogPipeline::with_batch_config

  • #​1503 Make the documentation for In-Memory exporters visible.

  • #​1526
    Performance Improvement : Creating Spans and LogRecords are now faster, by avoiding expensive cloning of Resource for every Span/LogRecord.

Changed
  • Breaking
    #​1313
    #​1350
    Changes how Span links/events are stored to achieve performance gains. See
    below for details:

    Behavior Change: When enforcing max_links_per_span, max_events_per_span
    from SpanLimits, links/events are kept in the first-come order. The previous
    "eviction" based approach is no longer performed.

    Breaking Change Affecting Exporter authors:

    SpanData now stores links as SpanLinks instead of EvictedQueue where
    SpanLinks is a struct with a Vec of links and dropped_count.

    SpanData now stores events as SpanEvents instead of EvictedQueue where
    SpanEvents is a struct with a Vec of events and dropped_count.

  • Breaking Remove TextMapCompositePropagator #​1373. Use TextMapCompositePropagator in opentelemetry API.

  • #​1375 Fix metric collections during PeriodicReader shutdown

  • Breaking #​1480 Remove fine grained BatchConfig configurations from BatchLogProcessorBuilder and BatchSpanProcessorBuilder. Use BatchConfigBuilder to construct a BatchConfig instance and pass it using BatchLogProcessorBuilder::with_batch_config or BatchSpanProcessorBuilder::with_batch_config.

  • Breaking #​1480 Remove mutating functions from BatchConfig, use BatchConfigBuilder to construct a BatchConfig instance.

  • Breaking #​1495 Remove Batch LogRecord&Span Processor configuration via non-standard environment variables. Use the following table to migrate from the no longer supported non-standard environment variables to the standard ones.

No longer supported Standard equivalent
OTEL_BLRP_SCHEDULE_DELAY_MILLIS OTEL_BLRP_SCHEDULE_DELAY
OTEL_BLRP_EXPORT_TIMEOUT_MILLIS OTEL_BLRP_EXPORT_TIMEOUT
OTEL_BSP_SCHEDULE_DELAY_MILLIS OTEL_BSP_SCHEDULE_DELAY
OTEL_BSP_EXPORT_TIMEOUT_MILLIS OTEL_BSP_EXPORT_TIMEOUT
  • Breaking 1455 Make the LoggerProvider Owned

    • Logger now takes an Owned Logger instead of a Weak<LoggerProviderInner>
    • LoggerProviderInner is no longer pub (crate)
    • Logger.provider() now returns &LoggerProvider instead of an Option<LoggerProvider>
  • 1519 Performance improvements
    when calling Counter::add() and UpDownCounter::add() with an empty set of attributes
    (e.g. counter.Add(5, &[]))

Fixed
  • #​1481 Fix error message caused by race condition when using PeriodicReader

v0.21.0

Compare Source

This release should been seen as 1.0-rc4 following 1.0-rc3 in v0.20.0. Refer to CHANGELOG.md in individual creates for details on changes made in different creates.

Changed
  • Bump MSRV to 1.65 #​1318
  • opentelemetry crate now only carries the API types #​1186. Use the opentelemetry_sdk crate for the SDK types.
  • trace::noop::NoopSpan no longer implements Default and instead exposes a const DEFAULT value. #​1270
  • Updated crate documentation and examples. #​1256
  • Breaking SpanBuilder attributes changed from OrderMap<Key, Value> to Vec<KeyValue> and with_attributes_map method is removed from SpanBuilder. This implies that OpenTelemetry API will no longer perform de-dup of attribute Keys. #​1293. Please share feedback here, if you are affected.
open-telemetry/opentelemetry-rust (opentelemetry_sdk)

v0.29.0

Compare Source

Released 2025-Mar-21

  • Update opentelemetry dependency to 0.29.
  • Update opentelemetry-http dependency to 0.29.
  • Breaking: The Runtime trait has been simplified and refined. See the #​2641
    for the changes.
  • Removed async-std support for Runtime, as async-std crate is deprecated.
  • Calls to MeterProviderBuilder::with_resource, TracerProviderBuilder::with_resource,
    LoggerProviderBuilder::with_resource are now additive (#​2677).
  • Moved ExportError trait from opentelemetry::trace::ExportError to opentelemetry_sdk::export::ExportError
  • Moved TraceError enum from opentelemetry::trace::TraceError to opentelemetry_sdk::trace::TraceError
  • Moved TraceResult type alias from opentelemetry::trace::TraceResult to opentelemetry_sdk::trace::TraceResult
  • Breaking: Make force_flush() in PushMetricExporter synchronous
  • Breaking: Updated the SpanExporter trait method signature:
  fn export(&mut self, batch: Vec<SpanData>) -> BoxFuture<'static, OTelSdkResult>;

to

  fn export(
    &mut self,
    batch: Vec<SpanData>,
) -> impl std::future::Future<Output = OTelSdkResult> + Send;

This affects anyone who writes custom exporters, as custom implementations of SpanExporter
should now define export as an async fn:

  impl trace::SpanExporter for CustomExporter {
    async fn export(&mut self, batch: Vec<trace::SpanData>) -> OTelSdkResult {
        // Implementation here
    }
}
  • Breaking The SpanExporter::export() method no longer requires a mutable reference to self.
    Before:

      async fn export(&mut self, batch: Vec<SpanData>) -> OTelSdkResult

    After:

      async fn export(&self, batch: Vec<SpanData>) -> OTelSdkResult

    Custom exporters will need to internally synchronize any mutable state, if applicable.

  • Bug Fix: BatchLogProcessor now correctly calls shutdown on the exporter
    when its shutdown is invoked.

  • Reduced some info level logs to debug

  • Breaking for custom LogProcessor/Exporter authors: Changed name
    parameter from &str to Option<&str> in event_enabled method on the
    LogProcessor and LogExporter traits. SdkLogger no longer passes its
    scope name but instead passes the incoming name when invoking
    event_enabled on processors.

  • Breaking for custom LogExporter authors: shutdown() method in
    LogExporter trait no longer requires a mutable ref to self. If the exporter
    needs to mutate state, it should rely on interior mutability.
    2764

  • Breaking (Affects custom Exporter/Processor authors only) Removed
    opentelelemetry_sdk::logs::error::{LogError, LogResult}. These were not
    intended to be public. If you are authoring custom processor/exporters, use
    opentelemetry_sdk::error::OTelSdkError and
    opentelemetry_sdk::error::OTelSdkResult.
    2790

  • Breaking for custom LogProcessor authors: Changed set_resource
    to require mutable ref.
    fn set_resource(&mut self, _resource: &Resource) {}

  • Breaking: InMemoryExporter's return type change.

    • TraceResult<Vec<SpanData>> to Result<Vec<SpanData>, InMemoryExporterError>
    • MetricResult<Vec<ResourceMetrics>> to Result<Vec<ResourceMetrics>, InMemoryExporterError>
    • LogResult<Vec<LogDataWithResource>> to Result<Vec<LogDataWithResource>, InMemoryExporterError>

v0.28.0

Compare Source

Released 2025-Feb-10

Note: Due to the large amount of making changes, check migration guide to
0.28
for a summary that can help majority users to
quickly migrate. The changelog below is the full list of changes.

  • Update opentelemetry dependency to 0.28.

  • Update opentelemetry-http dependency to 0.28.

  • Bump msrv to 1.75.0.

  • Bug fix: For cumulative temporality, ObservableGauge no longer export
    MetricPoints unless measurements were newly reported (in Observable callbacks)
    since last export. This bug fixes ensures ObservableGauge behaves as per OTel
    Spec. The bug is not addressed for other Observable instruments
    #​2213

  • Upgrade the tracing crate used for internal logging to version 0.1.40 or
    later. This is necessary because the internal logging macros utilize the name
    field as metadata, a feature introduced in version 0.1.40.
    #​2418

  • Feature: Introduced a new feature flag,
    experimental_metrics_disable_name_validation, which disables entire
    Instrument Name Validation. This is an experimental feature to unblock use
    cases requiring currently disallowed characters (eg: Windows Perf Counters).
    Use caution when enabling this feature as this breaks guarantees about metric
    name.

  • Bug fix: Empty Tracer names are retained as-is instead of replacing with
    "rust.opentelemetry.io/sdk/tracer"
    #​2486

  • Update EnvResourceDetector to allow resource attribute values containing
    equal signs ("=").
    #​2120

  • ResourceDetector.detect() no longer supports timeout option.

  • Breaking Resource.get() modified to require reference to Key instead of
    owned. Replace get(Key::from_static_str("key")) with
    get(&Key::from_static_str("key"))

  • Feature: Add ResourceBuilder for an easy way to create new Resources

  • Breaking: Remove

  • Resource::{new,empty,from_detectors,new_with_defaults,from_schema_url,merge,default}.
    To create Resources you should only use Resource::builder() or Resource::builder_empty(). See
    #​2322 for a migration guide.

    Example Usage:

    // old
    Resource::default().with_attributes([
        KeyValue::new("service.name", "test_service"),
        KeyValue::new("key", "value"),
    ]);
    
    // new
    Resource::builder()
        .with_service_name("test_service")
        .with_attribute(KeyValue::new("key", "value"))
        .build();
  • Breaking :
    #​2314

    • The LogRecord struct has been updated:
      • All fields are now pub(crate) instead of pub.
      • Getter methods have been introduced to access field values. This change
        impacts custom exporter and processor developers by requiring updates to
        code that directly accessed LogRecord fields. They must now use the provided
        getter methods (e.g., log_record.event_name() instead of
        log_record.event_name).
  • Breaking (Affects custom metric exporter authors only) start_time and
    time is moved from DataPoints to aggregations (Sum, Gauge, Histogram,
    ExpoHistogram) see
    #​2377 and
    #​2411, to
    reduce memory.

  • Breaking start_time is no longer optional for Sum aggregation, see
    #​2367, but
    is still optional for Gauge aggregation see
    #​2389.

  • SimpleLogProcessor modified to be generic over LogExporter to avoid
    dynamic dispatch to invoke exporter. If you were using
    with_simple_exporter to add LogExporter with SimpleLogProcessor, this is
    a transparent change.
    #​2338

  • Breaking opentelemetry::global::shutdown_tracer_provider() removed from the API,
    should now use tracer_provider.shutdown() see
    #​2369 for
    a migration example. "Tracer provider" is cheaply clonable, so users are
    encouraged to set a clone of it as the global (ex:
    global::set_tracer_provider(provider.clone())), so that instrumentations
    and other components can obtain tracers from global::tracer(). The
    tracer_provider must be kept around to call shutdown on it at the end of
    application (ex: tracer_provider.shutdown())

  • Breaking The LogExporter::export() method no longer requires a mutable
    reference to self.: Before: async fn export(&mut self, _batch: LogBatch<'_>) -> LogResult<()> After: async fn export(&self, _batch: LogBatch<'_>) -> LogResult<()> Custom exporters will need to internally synchronize any
    mutable state, if applicable.

  • Breaking Removed the following deprecated struct:

    • logs::LogData - Previously deprecated in version 0.27.1 Migration Guidance:
      This structure is no longer utilized within the SDK, and users should not have
      dependencies on it.
  • Breaking Removed the following deprecated methods:

    • Logger::provider() : Previously deprecated in version 0.27.1
    • Logger::instrumentation_scope() : Previously deprecated in version 0.27.1.
      Migration Guidance: - These methods were intended for log appender authors.
      Keep the clone of the provider handle, instead of depending on above
      methods.
  • Rename opentelemetry_sdk::logs::Builder to
    opentelemetry_sdk::logs::LoggerProviderBuilder.

  • Rename opentelemetry_sdk::trace::Builder to
    opentelemetry_sdk::trace::SdkTracerProviderBuilder.

  • Redesigned PeriodicReader, BatchSpanProcessor, BatchLogProcessor to no longer
    require an async runtime. They create its own background thread instead. When
    pairing with OTLP, grpc-tonic or reqwest-blocking-client are the only
    supported features (hyper, reqwest are not supported) These are now
    enabled by default and can be migrated to by removing the extra rt:Runtime
    argument as shown below.

    • PeriodicReader::builder(exporter,runtime::Tokio).build(); to
      PeriodicReader::builder(exporter).build();
    • .with_batch_exporter(exporter, runtime::Tokio) to
      .with_batch_exporter(exporter)

    The new implementation has following limitations:

    • Does not work if your application cannot spawn new Thread.
    • Does not support hyper, reqwest HTTP Clients
    • Does not support multiple concurrent exports (with_max_concurrent_exports
      is not supported). This existed only for traces.

    If this applies to you, you can get the old behavior back by following steps
    below:

    • Enable one or more of the feature flag from below
      experimental_metrics_periodicreader_with_async_runtime
      experimental_logs_batch_log_processor_with_async_runtime
      experimental_trace_batch_span_processor_with_async_runtime
    • Use updated namespace; i.e
      periodic_reader_with_async_runtime::PeriodicReader,
      log_processor_with_async_runtime::BatchLogProcessor and
      span_processor_with_async_runtime::BatchSpanProcessor
    • Continue using existing features flags rt-tokio,
      rt-tokio-current-thread, or rt-async-std.

    As part of the above redesign of PeriodicReader and BatchProcessors, these
    components no longer enforce timeout themselves and instead relies on
    Exporters to enforce own timeouts. In other words, the following are no longer
    supported.

    • with_max_export_timeout, with_timeout methods on BatchConfigBuilder,
      PeriodicReaderBuilder
    • OTEL_BLRP_EXPORT_TIMEOUT, OTEL_BSP_EXPORT_TIMEOUT

    Users are advised to configure timeout on the Exporters itself. For example,
    in the OTLP exporter, the export timeout can be configured using:

    • Environment variables
      • OTEL_EXPORTER_OTLP_TIMEOUT
      • OTEL_EXPORTER_OTLP_LOGS_TIMEOUT, OTEL_EXPORTER_OTLP_TRACES_TIMEOUT,
        OTEL_EXPORTER_OTLP_METRICS_TIMEOUT
    • The opentelemetry_otlp API, via .with_tonic().with_timeout() or
      .with_http().with_timeout().
  • Breaking Introduced experimental_async_runtime feature for
    runtime-specific traits.

    • Runtime-specific features (rt-tokio, rt-tokio-current-thread, and
      rt-async-std) now depend on the experimental_async_runtime feature.
    • For most users, no action is required. Enabling runtime features such as
      rt-tokio, rt-tokio-current-thread, or rt-async-std will automatically
      enable the experimental_async_runtime feature.
    • If you're implementing a custom runtime, you must explicitly enable the
      experimental_async_runtimefeature in your Cargo.toml and implement the requiredRuntime` traits.
  • Removed Metrics Cardinality Limit feature. This was originally introduced in
    #​1066 with a
    hardcoded limit of 2000 and no ability to change it. This feature will be
    re-introduced in a future date, along with the ability to change the cardinality
    limit.

  • Breaking Removed unused opentelemetry_sdk::Error enum.

  • Breaking (Affects custom Exporter authors only) Moved ExportError trait
    from opentelemetry::export::ExportError to opentelemetry_sdk::ExportError

  • Breaking (Affects custom SpanExporter, SpanProcessor authors only): Rename
    namespaces for Span exporter structs/traits before:
    opentelemetry_sdk::export::spans::{ExportResult, SpanData, SpanExporter};
    now: opentelemetry_sdk::trace::{ExportResult, SpanData, SpanExporter};

  • Breaking (Affects custom LogExporter, LogProcessor authors only): Rename
    namespaces for Log exporter structs/traits. before:
    opentelemetry_sdk::export::logs::{ExportResult, LogBatch, LogExporter}; now:
    opentelemetry_sdk::logs::{ExportResult, LogBatch, LogExporter};

  • Breaking opentelemetry_sdk::LogRecord::default() method is removed. The
    only way to create log record outside opentelemetry_sdk crate is using
    Logger::create_log_record() method.

  • Breaking: Rename namespaces for InMemoryExporters. (The module is still
    under "testing" feature flag)
    before:

    opentelemetry_sdk::testing::logs::{InMemoryLogExporter,
    InMemoryLogExporterBuilder};
    opentelemetry_sdk::testing::trace::{InMemorySpanExporter,
    InMemorySpanExporterBuilder};
    opentelemetry_sdk::testing::metrics::{InMemoryMetricExporter,
    InMemoryMetricExporterBuilder};

    now:

    opentelemetry_sdk::logs::{InMemoryLogExporter, InMemoryLogExporterBuilder};
    opentelemetry_sdk::trace::{InMemorySpanExporter,
    InMemorySpanExporterBuilder};
    opentelemetry_sdk::metrics::{InMemoryMetricExporter,
    InMemoryMetricExporterBuilder};
  • Breaking Renamed LoggerProvider, Logger and LogRecord to
    SdkLoggerProvider,SdkLogger and SdkLogRecord respectively to avoid name
    collision with public API types.
    #​2612

  • Breaking Renamed TracerProvider and Tracer to SdkTracerProvider and
    SdkTracer to avoid name collision with public API types. Tracer is still
    type-aliased to SdkTracer to keep back-compat with tracing-opentelemetry.
    #​2614

  • Breaking Providers, Exporters, Processors, and Readers are modified to use a
    unified Result type for export(), force_flush(), and shutdown() methods.
    All these methods now use OTelSdkResult as their return type. Following PRs
    show the exact changes:
    2613
    2625
    2604
    2606
    2573

v0.27.1

Compare Source

Released 2024-Nov-27

  • DEPRECATED:

    • trace::Config methods are moving onto TracerProvider Builder to be consistent with other signals. See #​2303 for migration guide.
      trace::Config is scheduled to be removed from public API in v0.28.0.
      example:

      // old
      let tracer_provider: TracerProvider = TracerProvider::builder()
          .with_config(Config::default().with_resource(Resource::empty()))
          .build();
      
      // new
      let tracer_provider: TracerProvider = TracerProvider::builder()
          .with_resource(Resource::empty())
          .build();
    • logs::LogData struct is deprecated, and scheduled to be removed from public API in v0.28.0.

    • Bug fix: Empty Meter names are retained as-is instead of replacing with
      "rust.opentelemetry.io/sdk/meter"
      #​2334

    • Bug fix: Empty Logger names are retained as-is instead of replacing with
      "rust.opentelemetry.io/sdk/logger"
      #​2316

    • Logger::provider: This method is deprecated as of version 0.27.1. To be removed in 0.28.0.

    • Logger::instrumentation_scope: This method is deprecated as of version 0.27.1. To be removed in 0.28.0
      Migration Guidance:
      - These methods are intended for log appenders. Keep the clone of the provider handle, instead of depending on above methods.

    • Bug Fix: Validates the with_boundaries bucket boundaries used in
      Histograms. The boundaries provided by the user must not contain f64::NAN,
      f64::INFINITY or f64::NEG_INFINITY and must be sorted in strictly
      increasing order, and contain no duplicates. Instruments will not record
      measurements if the boundaries are invalid.
      #​2351

  • Added with_periodic_exporter method to MeterProviderBuilder, allowing
    users to easily attach an exporter with a PeriodicReader for automatic metric
    export. Retained with_reader() for advanced use cases where a custom
    MetricReader configuration is needed.
    2597
    Example Usage:

    SdkMeterProvider::builder()
        .with_periodic_exporter(exporter)
        .build();

    Using a custom PeriodicReader (advanced use case):

    let reader = PeriodicReader::builder(exporter).build();
    SdkMeterProvider::builder()
    .with_reader(reader)
    .build();

v0.27.0

Compare Source

Released 2024-Nov-11

  • Update opentelemetry dependency version to 0.27

  • Update opentelemetry-http dependency version to 0.27

  • Bump MSRV to 1.70 #​2179

  • Implement LogRecord::set_trace_context for LogRecord. Respect any trace context set on a LogRecord when emitting through a Logger.

  • Improved LoggerProvider shutdown handling to prevent redundant shutdown calls when drop is invoked. #​2195

  • When creating new metric instruments by calling build(), SDK would return a no-op instrument if the validation fails (eg: Invalid metric name). #​2166

  • BREAKING for Metrics users:

    • Replaced
      • (#​2217): Removed {Delta,Cumulative}TemporalitySelector::new() in favor of directly using Temporality enum to simplify the configuration of MetricsExporterBuilder with different temporalities.
    • Renamed
      • (#​2232): The init method used to create instruments has been renamed to build.
        Before:

        let counter = meter.u64_counter("my_counter").init();

        Now:

        let counter = meter.u64_counter("my_counter").build();
      • (#​2255): de-pluralize Metric types.

        • PushMetricsExporter -> PushMetricExporter
        • InMemoryMetricsExporter -> InMemoryMetricExporter
        • InMemoryMetricsExporterBuilder -> InMemoryMetricExporterBuilder
  • BREAKING: #​2220

    • Removed InstrumentationLibrary re-export and its Scope alias, use opentelemetry::InstrumentationLibrary instead.
    • Unified builders across signals
      • Removed deprecated LoggerProvider::versioned_logger, TracerProvider::versioned_tracer
      • Removed MeterProvider::versioned_meter
      • Replaced these methods with LoggerProvider::logger_with_scope, TracerProvider::logger_with_scope, MeterProvider::meter_with_scope
  • #​2272

    • Pin url version to 2.5.2. The higher version breaks the build refer: servo/rust-url#992.
      The url crate is used when jaeger_remote_sampler feature is enabled.
  • BREAKING: #​2266

    • Moved ExportError trait from opentelemetry::ExportError to opentelemetry_sdk::export::ExportError

    • Moved LogError enum from opentelemetry::logs::LogError to opentelemetry_sdk::logs::LogError

    • Moved LogResult type alias from opentelemetry::logs::LogResult to opentelemetry_sdk::logs::LogResult

    • Renamed opentelemetry::metrics::Result type alias to opentelemetry::metrics::MetricResult

    • Renamed opentelemetry::metrics::MetricsError enum to opentelemetry::metrics::MetricError

    • Moved MetricError enum from opentelemetry::metrics::MetricError to opentelemetry_sdk::metrics::MetricError

    • Moved MetricResult type alias from opentelemetry::metrics::MetricResult to opentelemetry_sdk::metrics::MetricResult

    • Users calling public APIs that return these constructs (e.g, LoggerProvider::shutdown(), MeterProvider::force_flush()) should now import them from the SDK instead of the API.

    • Developers creating custom exporters should ensure they import these constructs from the SDK, not the API.

    • 2291 Rename logs_level_enabled flag to spec_unstable_logs_enabled. Please enable this updated flag if the feature is needed. This flag will be removed once the feature is stabilized in the specifications.

  • BREAKING: Temporality enum moved from opentelemetry_sdk::metrics::data::Temporality to opentelemetry_sdk::metrics::Temporality.

  • BREAKING: Views are now an opt-in ONLY feature. Please include the feature spec_unstable_metrics_views to enable Views. It will be stabilized post 1.0 stable release of the SDK. #​2295

  • Added a new PeriodicReader implementation (PeriodicReaderWithOwnThread)
    that does not rely on an async runtime, and instead creates own Thread. This
    is under feature flag "experimental_metrics_periodic_reader_no_runtime". The
    functionality maybe moved into existing PeriodReader or even removed in the
    future. As of today, this cannot be used as-is with OTLP Metric Exporter or
    any exporter that require an async runtime.

v0.26.0

Compare Source

Released 2024-Sep-30

  • Update opentelemetry dependency version to 0.26

  • BREAKING Public API changes:

    • Removed: SdkMeter struct #​2113. This API is only meant for internal use.
    • Removed: AggregationSelector trait and DefaultAggregationSelector struct #​2085. This API was unnecessary. The feature to customize aggregation for instruments should be offered by Views API.
  • Update async-std dependency version to 1.13

  • Breaking - Remove support for MetricProducer which allowed metrics from
    external sources to be sent through OpenTelemetry.
    #​2105

  • Feature: SimpleSpanProcessor::new is now public #​2119

  • For Delta Temporality, exporters are not invoked unless there were new
    measurements since the last collect/export.
    #​2153

  • MeterProvider modified to not invoke shutdown on Drop, if user has already
    called shutdown().
    #​2156

v0.25.0

Compare Source

  • Update opentelemetry dependency version to 0.25

  • Starting with this version, this crate will align with opentelemetry crate
    on major,minor versions.

  • Perf improvements for all metric instruments (except ExponentialHistogram) that led to faster metric updates and higher throughput #​1740:

    • Zero allocations when recording measurements: Once a measurement for a given attribute combination is reported, the SDK would not allocate additional memory for subsequent measurements reported for the same combination.
    • Minimized thread contention: Threads reporting measurements for the same instrument no longer contest for the same Mutex. The internal aggregation data structure now uses a combination of RwLock and atomics. Consequently, threads reporting measurements now only have to acquire a read lock.
    • Lock-free floating point updates: Measurements reported for f64 based metrics no longer need to acquire a Mutex to update the f64 value. They use a CAS-based loop instead.
  • opentelemetry_sdk::logs::record::LogRecord and opentelemetry_sdk::logs::record::TraceContext derive from PartialEq to facilitate Unit Testing.

  • Fixed an issue causing a panic during shutdown when using the
    TokioCurrentThread in BatchExportProcessor for traces and logs.
    #​1964
    #​1973

  • Fix BatchExportProcessor for traces and logs to trigger first export at the
    first interval instead of doing it right away.
    #​1970
    #​1973

    • Breaking #​1985
      Hide LogRecord attributes Implementation Details from processors and exporters.
      The custom exporters and processors can't directly access the LogData::LogRecord::attributes, as
      these are private to opentelemetry-sdk. Instead, they would now use LogRecord::attributes_iter()
      method to access them.
  • Fixed various Metric aggregation


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added dependencies Pull requests that update a dependency github_actions Issue/PR is from GitHub Actions labels Jul 3, 2024
@renovate
renovate Bot temporarily deployed to github-pages July 3, 2024 07:02 Inactive
@renovate renovate Bot changed the title chore(deps): update opentelemetry-rust monorepo Update opentelemetry-rust monorepo Jul 3, 2024
@renovate renovate Bot changed the title Update opentelemetry-rust monorepo chore(deps): update opentelemetry-rust monorepo Jul 4, 2024
@renovate renovate Bot changed the title chore(deps): update opentelemetry-rust monorepo Update opentelemetry-rust monorepo Jul 5, 2024
@renovate renovate Bot changed the title Update opentelemetry-rust monorepo chore(deps): update opentelemetry-rust monorepo Jul 5, 2024
@renovate renovate Bot changed the title chore(deps): update opentelemetry-rust monorepo Update opentelemetry-rust monorepo Jul 9, 2024
@renovate renovate Bot changed the title Update opentelemetry-rust monorepo chore(deps): update opentelemetry-rust monorepo Jul 11, 2024
@renovate renovate Bot changed the title chore(deps): update opentelemetry-rust monorepo Update opentelemetry-rust monorepo Jul 14, 2024
@renovate
renovate Bot force-pushed the renovate/opentelemetry-rust-monorepo branch from 935db69 to 39d6f5b Compare July 15, 2024 19:18
@renovate renovate Bot changed the title Update opentelemetry-rust monorepo chore(deps): update opentelemetry-rust monorepo Jul 16, 2024
@renovate
renovate Bot force-pushed the renovate/opentelemetry-rust-monorepo branch from 39d6f5b to c73dedb Compare August 28, 2024 08:33
@renovate renovate Bot changed the title chore(deps): update opentelemetry-rust monorepo Update opentelemetry-rust monorepo Aug 30, 2024
@renovate renovate Bot changed the title Update opentelemetry-rust monorepo chore(deps): update opentelemetry-rust monorepo Aug 30, 2024
@renovate
renovate Bot force-pushed the renovate/opentelemetry-rust-monorepo branch from c73dedb to cf8da7b Compare September 10, 2024 00:25
@renovate

renovate Bot commented Sep 10, 2024

Copy link
Copy Markdown
Contributor Author

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path Cargo.toml --package opentelemetry@0.21.0 --precise 0.29.0
    Updating crates.io index
error: failed to select a version for the requirement `opentelemetry = "^0.21.0"`
candidate versions found which didn't match: 0.29.0
location searched: crates.io index
required by package `tracing-opentelemetry v0.22.0`
    ... which satisfies dependency `tracing-opentelemetry = "^0.22.0"` (locked to 0.22.0) of package `conduwuit v0.5.0 (/tmp/renovate/repos/github/girlbossceo/conduwuit/src/main)`

@renovate
renovate Bot force-pushed the renovate/opentelemetry-rust-monorepo branch from cf8da7b to 8ce11c6 Compare October 2, 2024 01:42
@renovate
renovate Bot temporarily deployed to github-pages October 2, 2024 01:42 Inactive
@renovate
renovate Bot force-pushed the renovate/opentelemetry-rust-monorepo branch from 8ce11c6 to 9b3655d Compare November 12, 2024 01:50
@renovate
renovate Bot force-pushed the renovate/opentelemetry-rust-monorepo branch from 9b3655d to 8103657 Compare November 17, 2024 16:56
@renovate renovate Bot changed the title chore(deps): update opentelemetry-rust monorepo Update opentelemetry-rust monorepo Dec 5, 2024
@renovate
renovate Bot force-pushed the renovate/opentelemetry-rust-monorepo branch from 8103657 to 5e9bcd2 Compare December 17, 2024 01:05
@renovate renovate Bot changed the title Update opentelemetry-rust monorepo chore(deps): update opentelemetry-rust monorepo Jan 14, 2025
@renovate
renovate Bot force-pushed the renovate/opentelemetry-rust-monorepo branch from 5e9bcd2 to 1173256 Compare January 15, 2025 00:03
@renovate renovate Bot changed the title chore(deps): update opentelemetry-rust monorepo Update opentelemetry-rust monorepo Jan 29, 2025
@renovate
renovate Bot force-pushed the renovate/opentelemetry-rust-monorepo branch from 1173256 to 2f9a4f9 Compare February 10, 2025 22:09
@renovate renovate Bot changed the title Update opentelemetry-rust monorepo chore(deps): update opentelemetry-rust monorepo Mar 10, 2025
@renovate renovate Bot changed the title chore(deps): update opentelemetry-rust monorepo Update opentelemetry-rust monorepo Mar 10, 2025
@renovate
renovate Bot force-pushed the renovate/opentelemetry-rust-monorepo branch from 2f9a4f9 to 7f985d7 Compare March 17, 2025 17:38
@renovate
renovate Bot force-pushed the renovate/opentelemetry-rust-monorepo branch from 7f985d7 to 6323050 Compare March 22, 2025 02:35
@renovate
renovate Bot temporarily deployed to github-pages March 22, 2025 02:36 Inactive
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

dependencies Pull requests that update a dependency github_actions Issue/PR is from GitHub Actions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants