diff --git a/Cargo.lock b/Cargo.lock index e08dafd..7735dfb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1562,6 +1562,7 @@ dependencies = [ "humantime", "log", "prometheus-client", + "rand 0.8.5", "reqwest", "serde", "sled", diff --git a/Cargo.toml b/Cargo.toml index b0cf7a7..d85de5b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,7 @@ femme = "2.1.0" humantime = "2.0.1" log = "0.4.11" prometheus-client = "0.22.2" +rand = "0.8.5" reqwest = "0.12.4" serde = { version = "1.0.114", features = ["derive"] } sled = "0.34.2" diff --git a/src/schedule.rs b/src/schedule.rs index d55265f..afe8cc4 100644 --- a/src/schedule.rs +++ b/src/schedule.rs @@ -5,6 +5,7 @@ use std::sync::Mutex; use std::time::SystemTime; use anyhow::Result; +use rand::Rng; #[derive(Debug)] pub struct Schedule { @@ -52,7 +53,9 @@ impl Schedule { .duration_since(SystemTime::UNIX_EPOCH) .unwrap_or_default() .as_secs(); - self.insert_token(token, now) + let mut rng = rand::thread_rng(); + let jitter = rng.gen_range(0..60); + self.insert_token(token, now.saturating_add(jitter)) } pub async fn flush(&self) -> Result<()> {