fix: correct jitter range to ±25% and fix abort.rs doc — review findings

This commit is contained in:
asepharyana
2026-07-18 03:18:27 +07:00
parent 40524f930f
commit 9b6e51dc67
2 changed files with 6 additions and 5 deletions
+3 -2
View File
@@ -1,7 +1,8 @@
//! Shared abort-flag checks.
//!
//! The two variants (Option<Arc<AtomicBool>> and bare AtomicBool) are
//! used across the agent runtime, subagent, workflow engine, and provider.
//! Three variants (Option<Arc<AtomicBool>>, bare AtomicBool, and
//! Option<&AtomicBool>) cover the agent runtime, subagent, workflow
//! engine, and provider.
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::Arc;
@@ -13,10 +13,10 @@ use std::time::{Duration, SystemTime, UNIX_EPOCH};
pub fn backoff_seconds(attempt: u32, max_secs: u64) -> Duration {
let base_secs = (2u64).pow(attempt).min(max_secs);
let quarter = (base_secs * 250_000_000).max(100_000_000); // 25% of base, min 100ms
let offset = jitter_ns(quarter);
// ±25%: offset in [0, quarter), so result = base - quarter/2 + offset
let offset = jitter_ns(quarter * 2); // [0, 50% of base)
// ±25%: offset in [0, 2×quarter), result = base + offset - quarter
// which lies in [base - 25%, base + 25%).
let ns = base_secs * 1_000_000_000 + offset - quarter / 2;
let ns = base_secs * 1_000_000_000 + offset - quarter;
Duration::from_nanos(ns)
}