espresso_telemetry/
rate_limit.rs1use std::sync::atomic::{AtomicBool, Ordering};
7
8pub(crate) fn log_rate_limit_once(
12 flag: &AtomicBool,
13 env_filter: &str,
14 retry_after_secs: Option<u64>,
15) {
16 if flag
17 .compare_exchange(false, true, Ordering::SeqCst, Ordering::SeqCst)
18 .is_ok()
19 {
20 let retry = retry_after_secs
21 .map(|s| format!("{s}s"))
22 .unwrap_or_else(|| "unknown".to_string());
23 tracing::error!(
24 telemetry_log = env_filter,
25 retry_after = %retry,
26 "telemetry rate limit hit (HTTP 429). The proxy capped this node's hourly byte budget. \
27 Your current ESPRESSO_NODE_TELEMETRY_LOG is \"{env_filter}\": narrow it (e.g. \
28 \"warn\", or \"warn,hotshot=info\"). Retry-After: {retry}. This message is logged \
29 once per process."
30 );
31 }
32}