This is an automated email from the ASF dual-hosted git repository. koushiro pushed a commit to branch extract-oteltrace-layer in repository https://gitbox.apache.org/repos/asf/opendal.git
commit d8995866d6bc6f38aa2c2fa149e1be233f60dc14 Author: koushiro <[email protected]> AuthorDate: Thu Dec 11 16:10:09 2025 +0800 refactor: Split oteltrace layer to new crate --- core/Cargo.lock | 9 +++++ core/Cargo.toml | 3 +- core/core/Cargo.toml | 4 --- core/core/src/layers/mod.rs | 5 --- core/layers/oteltrace/Cargo.toml | 38 ++++++++++++++++++++++ .../oteltrace.rs => layers/oteltrace/src/lib.rs} | 13 ++++---- core/src/lib.rs | 2 ++ 7 files changed, 57 insertions(+), 17 deletions(-) diff --git a/core/Cargo.lock b/core/Cargo.lock index 9cb85c0c5..872fffa7e 100644 --- a/core/Cargo.lock +++ b/core/Cargo.lock @@ -5490,6 +5490,7 @@ dependencies = [ "opendal-layer-mime-guess", "opendal-layer-observe-metrics-common", "opendal-layer-otelmetrics", + "opendal-layer-oteltrace", "opendal-layer-prometheus", "opendal-layer-prometheus-client", "opendal-layer-tail-cut", @@ -5744,6 +5745,14 @@ dependencies = [ "opentelemetry", ] +[[package]] +name = "opendal-layer-oteltrace" +version = "0.55.0" +dependencies = [ + "opendal-core", + "opentelemetry", +] + [[package]] name = "opendal-layer-prometheus" version = "0.55.0" diff --git a/core/Cargo.toml b/core/Cargo.toml index a430d896c..c6e90b433 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -96,7 +96,7 @@ layers-fastrace = ["dep:opendal-layer-fastrace"] layers-metrics = ["dep:opendal-layer-metrics"] layers-mime-guess = ["dep:opendal-layer-mime-guess"] layers-otel-metrics = ["dep:opendal-layer-otelmetrics"] -layers-otel-trace = ["opendal-core/layers-otel-trace"] +layers-otel-trace = ["dep:opendal-layer-oteltrace"] layers-prometheus = ["dep:opendal-layer-prometheus"] layers-prometheus-client = ["dep:opendal-layer-prometheus-client"] layers-tail-cut = ["dep:opendal-layer-tail-cut"] @@ -197,6 +197,7 @@ opendal-layer-metrics = { path = "layers/metrics", version = "0.55.0", optional opendal-layer-mime-guess = { path = "layers/mime-guess", version = "0.55.0", optional = true, default-features = false } opendal-layer-observe-metrics-common = { path = "layers/observe-metrics-common", version = "0.55.0", optional = true, default-features = false } opendal-layer-otelmetrics = { path = "layers/otelmetrics", version = "0.55.0", optional = true, default-features = false } +opendal-layer-oteltrace = { path = "layers/oteltrace", version = "0.55.0", optional = true, default-features = false } opendal-layer-prometheus = { path = "layers/prometheus", version = "0.55.0", optional = true, default-features = false } opendal-layer-prometheus-client = { path = "layers/prometheus-client", version = "0.55.0", optional = true, default-features = false } opendal-layer-tail-cut = { path = "layers/tail-cut", version = "0.55.0", optional = true, default-features = false } diff --git a/core/core/Cargo.toml b/core/core/Cargo.toml index b431a8812..c039dc70f 100644 --- a/core/core/Cargo.toml +++ b/core/core/Cargo.toml @@ -72,8 +72,6 @@ executors-tokio = ["tokio/rt"] # Enable layers chaos support layers-chaos = ["dep:rand"] -# Enable layers oteltrace support. -layers-otel-trace = ["dep:opentelemetry", "opentelemetry/trace"] # Enable layers throttle support. layers-throttle = ["dep:governor"] # Enable dtrace support. @@ -307,8 +305,6 @@ web-sys = { version = "0.3.77", optional = true, features = [ # Layers # for layers-throttle governor = { version = "0.10.1", optional = true, features = ["std"] } -# for layers-opentelemetry -opentelemetry = { version = "0.31.0", optional = true } # for layers-dtrace probe = { version = "0.5.1", optional = true } diff --git a/core/core/src/layers/mod.rs b/core/core/src/layers/mod.rs index 187cb314d..813601ed3 100644 --- a/core/core/src/layers/mod.rs +++ b/core/core/src/layers/mod.rs @@ -51,11 +51,6 @@ mod retry; pub use self::retry::RetryInterceptor; pub use self::retry::RetryLayer; -#[cfg(feature = "layers-otel-trace")] -mod oteltrace; -#[cfg(feature = "layers-otel-trace")] -pub use self::oteltrace::OtelTraceLayer; - #[cfg(feature = "layers-throttle")] mod throttle; #[cfg(feature = "layers-throttle")] diff --git a/core/layers/oteltrace/Cargo.toml b/core/layers/oteltrace/Cargo.toml new file mode 100644 index 000000000..c75cb5a01 --- /dev/null +++ b/core/layers/oteltrace/Cargo.toml @@ -0,0 +1,38 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +[package] +description = "Apache OpenDAL OpenTelemetry trace layer" +name = "opendal-layer-oteltrace" + +authors = { workspace = true } +edition = { workspace = true } +homepage = { workspace = true } +license = { workspace = true } +repository = { workspace = true } +rust-version = { workspace = true } +version = { workspace = true } + +[package.metadata.docs.rs] +all-features = true + +[dependencies] +opendal-core = { path = "../../core", version = "0.55.0", default-features = false } +opentelemetry = { version = "0.31.0", default-features = false, features = ["trace"] } + +[dev-dependencies] +opendal-core = { path = "../../core", version = "0.55.0" } diff --git a/core/core/src/layers/oteltrace.rs b/core/layers/oteltrace/src/lib.rs similarity index 98% rename from core/core/src/layers/oteltrace.rs rename to core/layers/oteltrace/src/lib.rs index d5d67a815..570a74d2a 100644 --- a/core/core/src/layers/oteltrace.rs +++ b/core/layers/oteltrace/src/lib.rs @@ -18,6 +18,8 @@ use std::future::Future; use std::sync::Arc; +use opendal_core::raw::*; +use opendal_core::*; use opentelemetry::Context as TraceContext; use opentelemetry::KeyValue; use opentelemetry::global; @@ -27,26 +29,23 @@ use opentelemetry::trace::Span; use opentelemetry::trace::TraceContextExt; use opentelemetry::trace::Tracer; -use crate::raw::*; -use crate::*; - /// Add [opentelemetry::trace](https://docs.rs/opentelemetry/latest/opentelemetry/trace/index.html) for every operation. /// -/// Examples +/// # Examples /// /// ## Basic Setup /// /// ```no_run -/// # use opendal_core::layers::OtelTraceLayer; /// # use opendal_core::services; /// # use opendal_core::Operator; /// # use opendal_core::Result; -/// +/// # use opendal_layer_oteltrace::OtelTraceLayer; +/// # /// # fn main() -> Result<()> { /// let _ = Operator::new(services::Memory::default())? /// .layer(OtelTraceLayer) /// .finish(); -/// Ok(()) +/// # Ok(()) /// # } /// ``` pub struct OtelTraceLayer; diff --git a/core/src/lib.rs b/core/src/lib.rs index 4c8facd90..1ca809f09 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -66,6 +66,8 @@ pub mod layers { pub use opendal_layer_mime_guess::*; #[cfg(feature = "layers-otel-metrics")] pub use opendal_layer_otelmetrics::*; + #[cfg(feature = "layers-otel-trace")] + pub use opendal_layer_oteltrace::*; #[cfg(feature = "layers-prometheus")] pub use opendal_layer_prometheus::*; #[cfg(feature = "layers-prometheus-client")]
