Skip to content

Commit 4ec1f47

Browse files
committed
refactor(coprocessor): decouple tracer from OTEL guard
1 parent c624d37 commit 4ec1f47

File tree

2 files changed

+21
-36
lines changed

2 files changed

+21
-36
lines changed

coprocessor/fhevm-engine/fhevm-engine-common/src/telemetry.rs

Lines changed: 11 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,12 @@ pub const TXN_ID_ATTR_KEY: &str = "txn_id";
2323
/// Calls provider shutdown exactly once when dropped.
2424
pub struct OtelGuard {
2525
tracer_provider: Option<SdkTracerProvider>,
26-
tracer: Option<opentelemetry_sdk::trace::Tracer>,
2726
}
2827

2928
impl OtelGuard {
30-
fn new(
31-
trace_provider: SdkTracerProvider,
32-
tracer: Option<opentelemetry_sdk::trace::Tracer>,
33-
) -> Self {
29+
fn new(trace_provider: SdkTracerProvider) -> Self {
3430
Self {
3531
tracer_provider: Some(trace_provider),
36-
tracer,
3732
}
3833
}
3934

@@ -44,10 +39,6 @@ impl OtelGuard {
4439
}
4540
}
4641
}
47-
48-
pub fn tracer(&self) -> Option<opentelemetry_sdk::trace::Tracer> {
49-
self.tracer.clone()
50-
}
5142
}
5243

5344
impl Drop for OtelGuard {
@@ -83,20 +74,23 @@ pub fn init_otel(
8374

8475
let (_tracer, trace_provider) = build_tracer_provider(service_name, "otlp-layer")?;
8576
install_global_tracer_provider(trace_provider.clone());
86-
Ok(Some(OtelGuard::new(trace_provider, None)))
77+
Ok(Some(OtelGuard::new(trace_provider)))
8778
}
8879

8980
pub fn init_otel_tracing(
9081
service_name: &str,
9182
tracer_name: &'static str,
92-
) -> Result<Option<OtelGuard>, Box<dyn std::error::Error + Send + Sync + 'static>> {
83+
) -> Result<
84+
Option<(opentelemetry_sdk::trace::Tracer, OtelGuard)>,
85+
Box<dyn std::error::Error + Send + Sync + 'static>,
86+
> {
9387
if service_name.is_empty() {
9488
return Ok(None);
9589
}
9690

9791
let (tracer, trace_provider) = build_tracer_provider(service_name, tracer_name)?;
9892
install_global_tracer_provider(trace_provider.clone());
99-
Ok(Some(OtelGuard::new(trace_provider, Some(tracer))))
93+
Ok(Some((tracer, OtelGuard::new(trace_provider))))
10094
}
10195

10296
fn build_tracer_provider(
@@ -594,7 +588,7 @@ mod tests {
594588
#[test]
595589
fn otel_guard_shutdown_once_disarms_provider() {
596590
let provider = SdkTracerProvider::builder().build();
597-
let mut guard = OtelGuard::new(provider, None);
591+
let mut guard = OtelGuard::new(provider);
598592
assert!(guard.tracer_provider.is_some());
599593

600594
guard.shutdown_once();
@@ -606,19 +600,8 @@ mod tests {
606600
}
607601

608602
#[test]
609-
fn otel_guard_keeps_tracer_when_present() {
610-
let provider = SdkTracerProvider::builder().build();
611-
let tracer = provider.tracer("test-tracer");
612-
let runtime = OtelGuard::new(provider, Some(tracer));
613-
614-
assert!(runtime.tracer().is_some());
615-
}
616-
617-
#[test]
618-
fn otel_guard_handles_absent_tracer() {
619-
let provider = SdkTracerProvider::builder().build();
620-
let runtime = OtelGuard::new(provider, None);
621-
622-
assert!(runtime.tracer().is_none());
603+
fn init_otel_tracing_empty_service_name_returns_none() {
604+
let runtime = init_otel_tracing("", "otlp-layer").unwrap();
605+
assert!(runtime.is_none());
623606
}
624607
}

coprocessor/fhevm-engine/sns-worker/src/bin/sns_worker.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,15 @@ async fn main() {
6969

7070
let mut otlp_setup_error: Option<String> = None;
7171

72-
let otel_guard = match telemetry::init_otel_tracing(&config.service_name, "otlp-layer") {
73-
Ok(runtime) => runtime,
74-
Err(err) => {
75-
otlp_setup_error = Some(err.to_string());
76-
None
77-
}
78-
};
72+
let (otel_tracer, _otel_guard) =
73+
match telemetry::init_otel_tracing(&config.service_name, "otlp-layer") {
74+
Ok(Some((tracer, guard))) => (Some(tracer), Some(guard)),
75+
Ok(None) => (None, None),
76+
Err(err) => {
77+
otlp_setup_error = Some(err.to_string());
78+
(None, None)
79+
}
80+
};
7981

8082
let level_filter = tracing_subscriber::filter::LevelFilter::from_level(config.log_level);
8183

@@ -93,7 +95,7 @@ async fn main() {
9395
.with(level_filter)
9496
.with(fmt_layer);
9597

96-
if let Some(tracer) = otel_guard.as_ref().and_then(|runtime| runtime.tracer()) {
98+
if let Some(tracer) = otel_tracer {
9799
let otel_layer = tracing_opentelemetry::layer().with_tracer(tracer);
98100
base.with(otel_layer).init();
99101
} else {

0 commit comments

Comments
 (0)