Skip to content

Commit b151a0c

Browse files
committed
chore: OTLP retry post-review cleanup
1 parent 3b2f751 commit b151a0c

File tree

2 files changed

+6
-25
lines changed

2 files changed

+6
-25
lines changed

opentelemetry-otlp/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Released 2025-Sep-25
1111
- Update `opentelemetry-proto` and `opentelemetry-http` dependency version to 0.31.0
1212
- Add HTTP compression support with `gzip-http` and `zstd-http` feature flags
1313
- Add retry with exponential backoff and throttling support for HTTP and gRPC exporters
14+
This behaviour is opt in via the `experimental-grpc-retry` and `experimental-http-retry flags` on this crate.
1415

1516
## 0.30.0
1617

opentelemetry-otlp/src/retry.rs

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ use std::time::Duration;
2929
feature = "experimental-http-retry"
3030
))]
3131
use std::time::SystemTime;
32-
32+
use opentelemetry::otel_info;
3333
#[cfg(any(
3434
feature = "experimental-grpc-retry",
3535
feature = "experimental-http-retry"
@@ -61,26 +61,6 @@ pub struct RetryPolicy {
6161
pub jitter_ms: u64,
6262
}
6363

64-
/// A runtime stub for when experimental_async_runtime is not enabled.
65-
/// This allows retry policy to be configured but no actual retries occur.
66-
#[cfg(not(any(
67-
feature = "experimental-grpc-retry",
68-
feature = "experimental-http-retry"
69-
)))]
70-
#[derive(Debug, Clone, Default)]
71-
pub struct NoOpRuntime;
72-
73-
#[cfg(not(any(
74-
feature = "experimental-grpc-retry",
75-
feature = "experimental-http-retry"
76-
)))]
77-
impl NoOpRuntime {
78-
/// Creates a new no-op runtime.
79-
pub fn new() -> Self {
80-
Self
81-
}
82-
}
83-
8464
// Generates a random jitter value up to max_jitter
8565
#[cfg(any(
8666
feature = "experimental-grpc-retry",
@@ -144,13 +124,13 @@ where
144124

145125
match error_type {
146126
RetryErrorType::NonRetryable => {
147-
otel_warn!(name: "OtlpRetry", message = format!("Operation {:?} failed with non-retryable error: {:?}", operation_name, err));
127+
otel_warn!(name: "OtlpRetryNonRetryable", operation = operation_name, error = format!("{:?}", err));
148128
return Err(err);
149129
}
150130
RetryErrorType::Retryable if attempt < policy.max_retries => {
151131
attempt += 1;
152132
// Use exponential backoff with jitter
153-
otel_warn!(name: "OtlpRetry", message = format!("Retrying operation {:?} due to retryable error: {:?}", operation_name, err));
133+
otel_info!(name: "OtlpRetryRetrying", operation = operation_name, error = format!("{:?}", err));
154134
let jitter = generate_jitter(policy.jitter_ms);
155135
let delay_with_jitter = std::cmp::min(delay + jitter, policy.max_delay_ms);
156136
runtime
@@ -161,13 +141,13 @@ where
161141
RetryErrorType::Throttled(server_delay) if attempt < policy.max_retries => {
162142
attempt += 1;
163143
// Use server-specified delay (overrides exponential backoff)
164-
otel_warn!(name: "OtlpRetry", message = format!("Retrying operation {:?} after server-specified throttling delay: {:?}", operation_name, server_delay));
144+
otel_info!(name: "OtlpRetryThrottled", operation = operation_name, error = format!("{:?}", err), delay = format!("{:?}", server_delay));
165145
runtime.delay(server_delay).await;
166146
// Don't update exponential backoff delay for next attempt since server provided specific timing
167147
}
168148
_ => {
169149
// Max retries reached
170-
otel_warn!(name: "OtlpRetry", message = format!("Operation {:?} failed after {} attempts: {:?}", operation_name, attempt, err));
150+
otel_warn!(name: "OtlpRetryExhausted", operation = operation_name, error = format!("{:?}", err), attempts = attempt);
171151
return Err(err);
172152
}
173153
}

0 commit comments

Comments
 (0)