Skip to content

Commit 4c2ed45

Browse files
add shutdown with timeout for log exporter
1 parent bc82d4f commit 4c2ed45

File tree

22 files changed

+43
-94
lines changed

22 files changed

+43
-94
lines changed

opentelemetry-appender-log/Cargo.toml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,5 @@ spec_unstable_logs_enabled = ["opentelemetry/spec_unstable_logs_enabled"]
2929
with-serde = ["log/kv_serde", "serde"]
3030
experimental_metadata_attributes = ["dep:opentelemetry-semantic-conventions"]
3131

32-
[dev-dependencies]
33-
opentelemetry_sdk = { path = "../opentelemetry-sdk", features = [
34-
"testing",
35-
"spec_unstable_logs_enabled",
36-
] }
37-
opentelemetry-stdout = { workspace = true, features = ["logs"] }
38-
log = { workspace = true, features = ["kv_serde"] }
39-
tokio = { workspace = true }
40-
serde = { workspace = true, features = ["std", "derive"] }
41-
4232
[lints]
4333
workspace = true

opentelemetry-appender-tracing/Cargo.toml

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,6 @@ tracing-log = { workspace = true, optional = true }
2020
tracing-subscriber = { workspace = true, features = ["registry", "std"] }
2121
tracing-opentelemetry = { workspace = true, optional = true }
2222

23-
[dev-dependencies]
24-
log = { workspace = true }
25-
opentelemetry-stdout = { workspace = true, features = ["logs"] }
26-
opentelemetry_sdk = { path = "../opentelemetry-sdk", features = ["logs", "testing"] }
27-
tracing = { workspace = true, features = ["std"]}
28-
tracing-subscriber = { workspace = true, features = ["env-filter","registry", "std", "fmt"] }
29-
tracing-log = { workspace = true }
30-
criterion = { workspace = true }
31-
tokio = { workspace = true, features = ["full"]}
32-
33-
[target.'cfg(not(target_os = "windows"))'.dev-dependencies]
34-
pprof = { version = "0.14", features = ["flamegraph", "criterion"] }
35-
3623
[features]
3724
default = []
3825
experimental_metadata_attributes = ["dep:tracing-log"]

opentelemetry-jaeger-propagator/Cargo.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@ opentelemetry = { version = "0.29", default-features = false, features = [
2525
"trace",
2626
], path = "../opentelemetry" }
2727

28-
[dev-dependencies]
29-
opentelemetry = { features = ["testing"], path = "../opentelemetry" }
30-
3128
[features]
3229
default = ["internal-logs"]
3330
internal-logs = ["opentelemetry/internal-logs"]

opentelemetry-otlp/Cargo.toml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,6 @@ serde = { workspace = true, features = ["derive"], optional = true }
4343
thiserror = { workspace = true }
4444
serde_json = { workspace = true, optional = true }
4545

46-
[dev-dependencies]
47-
tokio-stream = { workspace = true, features = ["net"] }
48-
# need tokio runtime to run smoke tests.
49-
opentelemetry_sdk = { features = ["trace", "rt-tokio", "testing"], path = "../opentelemetry-sdk" }
50-
tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }
51-
futures-util = { workspace = true }
52-
temp-env = { workspace = true }
53-
tonic = { workspace = true, features = ["router", "server"] }
54-
5546
[features]
5647
# telemetry pillars and functions
5748
trace = ["opentelemetry/trace", "opentelemetry_sdk/trace", "opentelemetry-proto/trace"]

opentelemetry-otlp/src/exporter/http/logs.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::time;
12
use super::OtlpHttpClient;
23
use http::{header::CONTENT_TYPE, Method};
34
use opentelemetry::otel_debug;
@@ -46,7 +47,7 @@ impl LogExporter for OtlpHttpClient {
4647
Ok(())
4748
}
4849

49-
fn shutdown(&self) -> OTelSdkResult {
50+
fn shutdown_with_timeout(&self, _timeout: time::Duration) -> OTelSdkResult {
5051
let mut client_guard = self.client.lock().map_err(|e| {
5152
OTelSdkError::InternalFailure(format!("Failed to acquire client lock: {}", e))
5253
})?;
@@ -58,6 +59,10 @@ impl LogExporter for OtlpHttpClient {
5859
Ok(())
5960
}
6061

62+
fn shutdown(&self) -> OTelSdkResult {
63+
self.shutdown_with_timeout(time::Duration::from_secs(5))
64+
}
65+
6166
fn set_resource(&mut self, resource: &opentelemetry_sdk::Resource) {
6267
self.resource = resource.into();
6368
}

opentelemetry-otlp/src/exporter/tonic/logs.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use core::fmt;
2+
use std::time;
23
use opentelemetry::otel_debug;
34
use opentelemetry_proto::tonic::collector::logs::v1::{
45
logs_service_client::LogsServiceClient, ExportLogsServiceRequest,
@@ -84,7 +85,7 @@ impl LogExporter for TonicLogsClient {
8485
Ok(())
8586
}
8687

87-
fn shutdown(&self) -> OTelSdkResult {
88+
fn shutdown_with_timeout(&self, _timeout: time::Duration) -> OTelSdkResult {
8889
// TODO: Implement actual shutdown
8990
// Due to the use of tokio::sync::Mutex to guard
9091
// the inner client, we need to await the call to lock the mutex

opentelemetry-otlp/src/logs.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#[cfg(feature = "grpc-tonic")]
66
use opentelemetry::otel_debug;
77
use std::fmt::Debug;
8-
8+
use std::time;
99
use opentelemetry_sdk::{error::OTelSdkResult, logs::LogBatch};
1010

1111
use crate::{ExporterBuildError, HasExportConfig, NoExporterBuilderSet};
@@ -157,7 +157,7 @@ impl opentelemetry_sdk::logs::LogExporter for LogExporter {
157157
}
158158
}
159159

160-
fn shutdown(&self) -> OTelSdkResult {
160+
fn shutdown_with_timeout(&self, _timeout: time::Duration) -> OTelSdkResult {
161161
match &self.client {
162162
#[cfg(feature = "grpc-tonic")]
163163
SupportedTransportClient::Tonic(client) => client.shutdown(),

opentelemetry-proto/Cargo.toml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,5 @@ serde = { workspace = true, optional = true, features = ["serde_derive"] }
6060
hex = { workspace = true, optional = true }
6161
base64 = { workspace = true, optional = true }
6262

63-
[dev-dependencies]
64-
opentelemetry = { features = ["testing"], path = "../opentelemetry" }
65-
tonic-build = { workspace = true }
66-
prost-build = { workspace = true }
67-
tempfile = { workspace = true }
68-
serde_json = { workspace = true }
69-
7063
[lints]
7164
workspace = true

opentelemetry-sdk/Cargo.toml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,6 @@ http = { workspace = true, optional = true }
3131
all-features = true
3232
rustdoc-args = ["--cfg", "docsrs"]
3333

34-
[dev-dependencies]
35-
criterion = { workspace = true, features = ["html_reports"] }
36-
rstest = { workspace = true }
37-
temp-env = { workspace = true }
38-
39-
[target.'cfg(not(target_os = "windows"))'.dev-dependencies]
40-
pprof = { version = "0.14", features = ["flamegraph", "criterion"] }
41-
4234
[features]
4335
default = ["trace", "metrics", "logs", "internal-logs"]
4436
trace = ["opentelemetry/trace", "rand", "percent-encoding"]

opentelemetry-sdk/benches/log_enabled.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
// cargo bench --bench log_enabled --features="spec_unstable_logs_enabled,experimental_logs_concurrent_log_processor"
1313

14+
use std::time;
1415
use criterion::{criterion_group, criterion_main, Criterion};
1516
use opentelemetry::logs::{Logger, LoggerProvider};
1617
use opentelemetry_sdk::error::OTelSdkResult;
@@ -29,7 +30,7 @@ impl LogExporter for NoopExporter {
2930
Ok(())
3031
}
3132

32-
fn shutdown(&self) -> OTelSdkResult {
33+
fn shutdown_with_timeout(&self, _timeout: time::Duration) -> OTelSdkResult {
3334
Ok(())
3435
}
3536

0 commit comments

Comments
 (0)