Skip to content

Commit f2ea8f6

Browse files
Cortex Devfactory-droid[bot]
andcommitted
fix: Update OpenTelemetry API for v0.30
- Use SdkTracerProvider instead of TracerProvider - Use KeyValue for resource attributes - Use HTTP exporter instead of tonic/gRPC - Fix unused variable warning Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
1 parent b6cd786 commit f2ea8f6

1 file changed

Lines changed: 16 additions & 16 deletions

File tree

cortex-otel/src/otel_provider.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
//! OpenTelemetry provider implementation.
22
3+
#[cfg(feature = "otel")]
4+
use opentelemetry::KeyValue;
35
#[cfg(feature = "otel")]
46
use opentelemetry::trace::TracerProvider as _;
57
#[cfg(feature = "otel")]
68
use opentelemetry_otlp::WithExportConfig;
79
#[cfg(feature = "otel")]
810
use opentelemetry_sdk::{
9-
Resource, runtime,
10-
trace::{self as sdktrace, Sampler},
11+
Resource,
12+
trace::{Sampler, SdkTracerProvider},
1113
};
1214
#[cfg(feature = "otel")]
1315
use opentelemetry_semantic_conventions::resource::SERVICE_NAME;
@@ -21,7 +23,7 @@ use crate::config::OtelSettings;
2123
/// OpenTelemetry provider for Cortex CLI.
2224
#[cfg(feature = "otel")]
2325
pub struct OtelProvider {
24-
tracer_provider: sdktrace::TracerProvider,
26+
tracer_provider: SdkTracerProvider,
2527
}
2628

2729
#[cfg(feature = "otel")]
@@ -34,23 +36,21 @@ impl OtelProvider {
3436

3537
let endpoint = settings.endpoint.as_ref()?;
3638

37-
// Build resource
38-
let mut resource_builder =
39-
Resource::builder().with_attribute(SERVICE_NAME, settings.service_name.clone());
39+
// Build resource attributes
40+
let mut attrs = vec![KeyValue::new(SERVICE_NAME, settings.service_name.clone())];
4041

4142
if let Some(version) = &settings.service_version {
42-
resource_builder = resource_builder.with_attribute(
43+
attrs.push(KeyValue::new(
4344
opentelemetry_semantic_conventions::resource::SERVICE_VERSION,
4445
version.clone(),
45-
);
46+
));
4647
}
4748

4849
for (key, value) in &settings.resource_attributes {
49-
resource_builder = resource_builder
50-
.with_attribute(opentelemetry::KeyValue::new(key.clone(), value.clone()));
50+
attrs.push(KeyValue::new(key.clone(), value.clone()));
5151
}
5252

53-
let resource = resource_builder.build();
53+
let resource = Resource::builder_empty().with_attributes(attrs).build();
5454

5555
// Configure sampler
5656
let sampler = if settings.sampling_ratio >= 1.0 {
@@ -61,26 +61,26 @@ impl OtelProvider {
6161
Sampler::TraceIdRatioBased(settings.sampling_ratio)
6262
};
6363

64-
// Build OTLP exporter
64+
// Build OTLP exporter using HTTP (more portable than tonic/gRPC)
6565
let exporter = opentelemetry_otlp::SpanExporter::builder()
66-
.with_tonic()
66+
.with_http()
6767
.with_endpoint(endpoint)
6868
.with_timeout(std::time::Duration::from_secs(settings.export_timeout_secs))
6969
.build()
7070
.ok()?;
7171

7272
// Build tracer provider
73-
let tracer_provider = sdktrace::TracerProvider::builder()
73+
let tracer_provider = SdkTracerProvider::builder()
7474
.with_resource(resource)
7575
.with_sampler(sampler)
76-
.with_batch_exporter(exporter, runtime::Tokio)
76+
.with_batch_exporter(exporter)
7777
.build();
7878

7979
Some(Self { tracer_provider })
8080
}
8181

8282
/// Get trace context headers from the current span.
83-
pub fn headers(span: &Span) -> HeaderMap {
83+
pub fn headers(_span: &Span) -> HeaderMap {
8484
use opentelemetry::propagation::TextMapPropagator;
8585
use opentelemetry_sdk::propagation::TraceContextPropagator;
8686

0 commit comments

Comments
 (0)