Skip to content

Commit 0565151

Browse files
committed
0.26 -> 0.27
1 parent 6f2dd37 commit 0565151

File tree

3 files changed

+29
-40
lines changed

3 files changed

+29
-40
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ derive_more = { version = "2.0", features = ["constructor", "display", "from", "
1212
thiserror = "2"
1313
tonic = "0.12"
1414
tonic-build = "0.12"
15-
opentelemetry = { version = "0.26", features = ["metrics"] }
15+
opentelemetry = { version = "0.27", features = ["metrics"] }
1616
prost = "0.13"
1717
prost-types = "0.13"
1818

core/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ itertools = "0.14"
4343
lru = "0.13"
4444
mockall = "0.13"
4545
opentelemetry = { workspace = true, features = ["metrics"], optional = true }
46-
opentelemetry_sdk = { version = "0.26", features = ["rt-tokio", "metrics"], optional = true }
47-
opentelemetry-otlp = { version = "0.26", features = ["tokio", "metrics", "tls", "http-proto", "reqwest-client", ], optional = true }
48-
opentelemetry-prometheus = { git = "https://github.com/open-telemetry/opentelemetry-rust.git", rev = "e911383", optional = true }
46+
opentelemetry_sdk = { version = "0.27", features = ["rt-tokio", "metrics", "spec_unstable_metrics_views"], optional = true }
47+
opentelemetry-otlp = { version = "0.27", features = ["tokio", "metrics", "tls", "http-proto", "reqwest-client", ], optional = true }
48+
opentelemetry-prometheus = { version = "0.27", optional = true }
4949
parking_lot = { version = "0.12", features = ["send_guard"] }
5050
pid = "4.0"
5151
pin-project = "1.0"

core/src/telemetry/otel.rs

Lines changed: 25 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,14 @@ use super::{
1111
};
1212
use crate::{abstractions::dbg_panic, telemetry::metrics::DEFAULT_S_BUCKETS};
1313
use opentelemetry::{
14-
self, Key, KeyValue, Value, global,
14+
self, Key, KeyValue, Value,
1515
metrics::{Meter, MeterProvider as MeterProviderT},
1616
};
17-
use opentelemetry_otlp::WithExportConfig;
17+
use opentelemetry_otlp::{WithExportConfig, WithHttpConfig, WithTonicConfig};
1818
use opentelemetry_sdk::{
19-
Resource,
2019
metrics::{
21-
Aggregation, Instrument, InstrumentKind, MeterProviderBuilder, PeriodicReader,
22-
SdkMeterProvider, View, data::Temporality, new_view, reader::TemporalitySelector,
23-
},
24-
runtime,
20+
new_view, Temporality, Aggregation, Instrument, InstrumentKind, MeterProviderBuilder, MetricError, PeriodicReader, SdkMeterProvider, View
21+
}, runtime, Resource
2522
};
2623
use std::{collections::HashMap, net::SocketAddr, sync::Arc, time::Duration};
2724
use temporal_sdk_core_api::telemetry::{
@@ -35,10 +32,13 @@ use temporal_sdk_core_api::telemetry::{
3532
use tokio::task::AbortHandle;
3633
use tonic::{metadata::MetadataMap, transport::ClientTlsConfig};
3734

35+
/// A specialized `Result` type for metric operations.
36+
type Result<T> = std::result::Result<T, MetricError>;
37+
3838
fn histo_view(
3939
metric_name: &'static str,
4040
use_seconds: bool,
41-
) -> opentelemetry::metrics::Result<Box<dyn View>> {
41+
) -> Result<Box<dyn View>> {
4242
let buckets = default_buckets_for(metric_name, use_seconds);
4343
new_view(
4444
Instrument::new().name(format!("*{metric_name}")),
@@ -56,7 +56,7 @@ pub(super) fn augment_meter_provider_with_defaults(
5656
global_tags: &HashMap<String, String>,
5757
use_seconds: bool,
5858
bucket_overrides: HistogramBucketOverrides,
59-
) -> opentelemetry::metrics::Result<MeterProviderBuilder> {
59+
) -> Result<MeterProviderBuilder> {
6060
for (name, buckets) in bucket_overrides.overrides {
6161
mpb = mpb.with_view(new_view(
6262
Instrument::new().name(format!("*{name}")),
@@ -117,29 +117,27 @@ pub(super) fn augment_meter_provider_with_defaults(
117117
/// Create an OTel meter that can be used as a [CoreMeter] to export metrics over OTLP.
118118
pub fn build_otlp_metric_exporter(
119119
opts: OtelCollectorOptions,
120-
) -> Result<CoreOtelMeter, anyhow::Error> {
121-
global::set_error_handler(|err| {
122-
tracing::error!("{}", err);
123-
})?;
120+
) -> std::result::Result<CoreOtelMeter, anyhow::Error> {
124121
let exporter = match opts.protocol {
125122
OtlpProtocol::Grpc => {
126-
let mut exporter = opentelemetry_otlp::TonicExporterBuilder::default()
123+
let mut exporter = opentelemetry_otlp::MetricExporter::builder()
124+
.with_tonic()
127125
.with_endpoint(opts.url.to_string());
128126
if opts.url.scheme() == "https" || opts.url.scheme() == "grpcs" {
129127
exporter = exporter.with_tls_config(ClientTlsConfig::new().with_native_roots());
130128
}
131129
exporter
132130
.with_metadata(MetadataMap::from_headers((&opts.headers).try_into()?))
133-
.build_metrics_exporter(Box::new(metric_temporality_to_selector(
131+
.with_temporality(metric_temporality_to_temporality(
134132
opts.metric_temporality,
135-
)))?
133+
)).build()?
136134
}
137135
OtlpProtocol::Http => opentelemetry_otlp::HttpExporterBuilder::default()
138136
.with_endpoint(opts.url.to_string())
139137
.with_headers(opts.headers)
140-
.build_metrics_exporter(Box::new(metric_temporality_to_selector(
138+
.build_metrics_exporter(metric_temporality_to_temporality(
141139
opts.metric_temporality,
142-
)))?,
140+
))?,
143141
};
144142
let reader = PeriodicReader::builder(exporter, runtime::Tokio)
145143
.with_interval(opts.metric_periodicity)
@@ -170,7 +168,7 @@ pub struct StartedPromServer {
170168
/// Requires a Tokio runtime to exist, and will block briefly while binding the server endpoint.
171169
pub fn start_prometheus_metric_exporter(
172170
opts: PrometheusExporterOptions,
173-
) -> Result<StartedPromServer, anyhow::Error> {
171+
) -> std::result::Result<StartedPromServer, anyhow::Error> {
174172
let (srv, exporter) = PromServer::new(&opts)?;
175173
let meter_provider = augment_meter_provider_with_defaults(
176174
MeterProviderBuilder::default().with_reader(exporter),
@@ -228,7 +226,7 @@ impl CoreMeter for CoreOtelMeter {
228226
.u64_counter(params.name)
229227
.with_unit(params.unit)
230228
.with_description(params.description)
231-
.init(),
229+
.build(),
232230
)
233231
}
234232

@@ -238,7 +236,7 @@ impl CoreMeter for CoreOtelMeter {
238236
.u64_histogram(params.name)
239237
.with_unit(params.unit)
240238
.with_description(params.description)
241-
.init(),
239+
.build(),
242240
)
243241
}
244242

@@ -248,7 +246,7 @@ impl CoreMeter for CoreOtelMeter {
248246
.f64_histogram(params.name)
249247
.with_unit(params.unit)
250248
.with_description(params.description)
251-
.init(),
249+
.build(),
252250
)
253251
}
254252

@@ -268,7 +266,7 @@ impl CoreMeter for CoreOtelMeter {
268266
.u64_gauge(params.name)
269267
.with_unit(params.unit)
270268
.with_description(params.description)
271-
.init(),
269+
.build(),
272270
)
273271
}
274272

@@ -278,7 +276,7 @@ impl CoreMeter for CoreOtelMeter {
278276
.f64_gauge(params.name)
279277
.with_unit(params.unit)
280278
.with_description(params.description)
281-
.init(),
279+
.build(),
282280
)
283281
}
284282
}
@@ -325,19 +323,10 @@ fn default_resource(override_values: &HashMap<String, String>) -> Resource {
325323
.merge(&Resource::new(override_kvs))
326324
}
327325

328-
#[derive(Clone)]
329-
struct ConstantTemporality(Temporality);
330-
331-
impl TemporalitySelector for ConstantTemporality {
332-
fn temporality(&self, _: InstrumentKind) -> Temporality {
333-
self.0
334-
}
335-
}
336-
337-
fn metric_temporality_to_selector(t: MetricTemporality) -> impl TemporalitySelector + Clone {
326+
fn metric_temporality_to_temporality(t: MetricTemporality) -> Temporality {
338327
match t {
339-
MetricTemporality::Cumulative => ConstantTemporality(Temporality::Cumulative),
340-
MetricTemporality::Delta => ConstantTemporality(Temporality::Delta),
328+
MetricTemporality::Cumulative => Temporality::Cumulative,
329+
MetricTemporality::Delta => Temporality::Delta,
341330
}
342331
}
343332

0 commit comments

Comments
 (0)