Skip to content

Commit ca1fbbf

Browse files
committed
fix span exporter again
1 parent 27e9ad2 commit ca1fbbf

File tree

1 file changed

+64
-28
lines changed

1 file changed

+64
-28
lines changed

crates/ingress-rpc/src/main.rs

Lines changed: 64 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -121,32 +121,48 @@ async fn main() -> anyhow::Result<()> {
121121
trace_config.sampler = Box::new(Sampler::AlwaysOn);
122122
trace_config.id_generator = Box::new(RandomIdGenerator::default());
123123

124-
let provider = opentelemetry_datadog::new_pipeline()
125-
.with_service_name(env!("CARGO_PKG_NAME"))
126-
.with_api_version(opentelemetry_datadog::ApiVersion::Version05)
127-
.with_agent_endpoint(&otlp_endpoint)
128-
.with_trace_config(trace_config)
129-
.install_batch()
130-
.unwrap();
131-
global::set_tracer_provider(provider.clone());
132-
133-
let scope = InstrumentationScope::builder("opentelemetry-datadog")
134-
.with_version(env!("CARGO_PKG_VERSION"))
135-
.with_schema_url(semcov::SCHEMA_URL)
136-
.with_attributes(None)
137-
.build();
138-
139-
let tracer = provider.tracer_with_scope(scope);
140-
tracer.in_span("span_main", |_span| {
141-
info!(
142-
message = "Tracing enabled",
143-
endpoint = %otlp_endpoint
144-
);
145-
});
146-
tracing_subscriber::registry()
147-
.with(tracing_opentelemetry::OpenTelemetryLayer::new(tracer))
148-
.with(tracing_subscriber::fmt::layer().with_filter(log_filter))
149-
.init();
124+
let provider = if config.tracing_enabled {
125+
Some(
126+
opentelemetry_datadog::new_pipeline()
127+
.with_service_name(env!("CARGO_PKG_NAME"))
128+
.with_api_version(opentelemetry_datadog::ApiVersion::Version05)
129+
.with_agent_endpoint(&otlp_endpoint)
130+
.with_trace_config(trace_config)
131+
.install_batch()
132+
.unwrap(),
133+
)
134+
} else {
135+
None
136+
};
137+
138+
if let Some(ref provider) = provider {
139+
global::set_tracer_provider(provider.clone());
140+
}
141+
142+
if let Some(ref provider) = provider {
143+
let scope = InstrumentationScope::builder("opentelemetry-datadog")
144+
.with_version(env!("CARGO_PKG_VERSION"))
145+
.with_schema_url(semcov::SCHEMA_URL)
146+
.with_attributes(None)
147+
.build();
148+
149+
let tracer = provider.tracer_with_scope(scope);
150+
tracer.in_span("span_main", |_span| {
151+
info!(
152+
message = "Tracing enabled",
153+
endpoint = %otlp_endpoint
154+
);
155+
});
156+
157+
tracing_subscriber::registry()
158+
.with(tracing_opentelemetry::OpenTelemetryLayer::new(tracer))
159+
.with(tracing_subscriber::fmt::layer().with_filter(log_filter))
160+
.init();
161+
} else {
162+
tracing_subscriber::registry()
163+
.with(tracing_subscriber::fmt::layer().with_filter(log_filter))
164+
.init();
165+
}
150166

151167
info!(
152168
message = "Starting ingress service",
@@ -184,8 +200,28 @@ async fn main() -> anyhow::Result<()> {
184200
address = %addr
185201
);
186202

187-
handle.stopped().await;
188-
let _ = provider.shutdown();
203+
// Set up graceful shutdown
204+
tokio::select! {
205+
_ = handle.stopped() => {
206+
info!("Server stopped");
207+
}
208+
_ = tokio::signal::ctrl_c() => {
209+
info!("Received shutdown signal");
210+
}
211+
}
212+
213+
// Give time for any remaining spans to be processed
214+
tokio::time::sleep(tokio::time::Duration::from_millis(500)).await;
215+
216+
// Shutdown tracer provider if it exists
217+
if let Some(provider) = provider {
218+
info!("Shutting down tracer provider");
219+
if let Err(e) = provider.shutdown() {
220+
warn!("Error shutting down tracer provider: {}", e);
221+
}
222+
}
223+
224+
info!("Ingress service shutdown complete");
189225
Ok(())
190226
}
191227

0 commit comments

Comments
 (0)