Skip to content

Commit 2b83d4f

Browse files
committed
0.27 -> 0.28
1 parent 0565151 commit 2b83d4f

File tree

3 files changed

+44
-27
lines changed

3 files changed

+44
-27
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.27", features = ["metrics"] }
15+
opentelemetry = { version = "0.28", 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.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 }
46+
opentelemetry_sdk = { version = "0.28", features = ["rt-tokio", "metrics", "spec_unstable_metrics_views"], optional = true }
47+
opentelemetry-otlp = { version = "0.28", features = ["tokio", "metrics", "tls", "http-proto", "reqwest-client", "grpc-tonic" ], optional = true }
48+
opentelemetry-prometheus = { version = "0.28", 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: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ use opentelemetry::{
1616
};
1717
use opentelemetry_otlp::{WithExportConfig, WithHttpConfig, WithTonicConfig};
1818
use opentelemetry_sdk::{
19+
Resource,
1920
metrics::{
20-
new_view, Temporality, Aggregation, Instrument, InstrumentKind, MeterProviderBuilder, MetricError, PeriodicReader, SdkMeterProvider, View
21-
}, runtime, Resource
21+
Aggregation, Instrument, InstrumentKind, MeterProviderBuilder, MetricError, PeriodicReader,
22+
SdkMeterProvider, Temporality, View, new_view,
23+
},
2224
};
2325
use std::{collections::HashMap, net::SocketAddr, sync::Arc, time::Duration};
2426
use temporal_sdk_core_api::telemetry::{
@@ -35,10 +37,7 @@ use tonic::{metadata::MetadataMap, transport::ClientTlsConfig};
3537
/// A specialized `Result` type for metric operations.
3638
type Result<T> = std::result::Result<T, MetricError>;
3739

38-
fn histo_view(
39-
metric_name: &'static str,
40-
use_seconds: bool,
41-
) -> Result<Box<dyn View>> {
40+
fn histo_view(metric_name: &'static str, use_seconds: bool) -> Result<Box<dyn View>> {
4241
let buckets = default_buckets_for(metric_name, use_seconds);
4342
new_view(
4443
Instrument::new().name(format!("*{metric_name}")),
@@ -128,18 +127,15 @@ pub fn build_otlp_metric_exporter(
128127
}
129128
exporter
130129
.with_metadata(MetadataMap::from_headers((&opts.headers).try_into()?))
131-
.with_temporality(metric_temporality_to_temporality(
132-
opts.metric_temporality,
133-
)).build()?
130+
.with_temporality(metric_temporality_to_temporality(opts.metric_temporality))
131+
.build()?
134132
}
135133
OtlpProtocol::Http => opentelemetry_otlp::HttpExporterBuilder::default()
136134
.with_endpoint(opts.url.to_string())
137135
.with_headers(opts.headers)
138-
.build_metrics_exporter(metric_temporality_to_temporality(
139-
opts.metric_temporality,
140-
))?,
136+
.build_metrics_exporter(metric_temporality_to_temporality(opts.metric_temporality))?,
141137
};
142-
let reader = PeriodicReader::builder(exporter, runtime::Tokio)
138+
let reader = PeriodicReader::builder(exporter)
143139
.with_interval(opts.metric_periodicity)
144140
.build();
145141
let mp = augment_meter_provider_with_defaults(
@@ -301,14 +297,25 @@ fn default_resource_instance() -> &'static Resource {
301297

302298
static INSTANCE: OnceLock<Resource> = OnceLock::new();
303299
INSTANCE.get_or_init(|| {
304-
let resource = Resource::default();
305-
if resource.get(Key::from("service.name")) == Some(Value::from("unknown_service")) {
300+
let resource = Resource::builder().build();
301+
if resource.get(&Key::from("service.name")) == Some(Value::from("unknown_service")) {
306302
// otel spec recommends to leave service.name as unknown_service but we want to
307303
// maintain backwards compatability with existing library behaviour
308-
return resource.merge(&Resource::new([KeyValue::new(
309-
"service.name",
310-
TELEM_SERVICE_NAME,
311-
)]));
304+
let compat = Resource::builder()
305+
.with_attribute(KeyValue::new("service.name", TELEM_SERVICE_NAME))
306+
.build();
307+
return Resource::builder_empty()
308+
.with_attributes(
309+
resource
310+
.iter()
311+
.map(|(k, v)| KeyValue::new(k.clone(), v.clone())),
312+
)
313+
.with_attributes(
314+
compat
315+
.iter()
316+
.map(|(k, v)| KeyValue::new(k.clone(), v.clone())),
317+
)
318+
.build();
312319
}
313320
resource
314321
})
@@ -318,9 +325,19 @@ fn default_resource(override_values: &HashMap<String, String>) -> Resource {
318325
let override_kvs = override_values
319326
.iter()
320327
.map(|(k, v)| KeyValue::new(k.clone(), v.clone()));
321-
default_resource_instance()
322-
.clone()
323-
.merge(&Resource::new(override_kvs))
328+
let override_resource = Resource::builder().with_attributes(override_kvs).build();
329+
Resource::builder_empty()
330+
.with_attributes(
331+
default_resource_instance()
332+
.iter()
333+
.map(|(k, v)| KeyValue::new(k.clone(), v.clone())),
334+
)
335+
.with_attributes(
336+
override_resource
337+
.iter()
338+
.map(|(k, v)| KeyValue::new(k.clone(), v.clone())),
339+
)
340+
.build()
324341
}
325342

326343
fn metric_temporality_to_temporality(t: MetricTemporality) -> Temporality {
@@ -338,7 +355,7 @@ pub(crate) mod tests {
338355
#[test]
339356
pub(crate) fn default_resource_instance_service_name_default() {
340357
let resource = default_resource_instance();
341-
let service_name = resource.get(Key::from("service.name"));
358+
let service_name = resource.get(&Key::from("service.name"));
342359
assert_eq!(service_name, Some(Value::from(TELEM_SERVICE_NAME)));
343360
}
344361
}

0 commit comments

Comments
 (0)