From a80be783450f68f2f56d111e5534ce3aa550fea4 Mon Sep 17 00:00:00 2001 From: Alexey <247128645+axkurcom@users.noreply.github.com> Date: Thu, 5 Mar 2026 16:32:31 +0300 Subject: [PATCH] DC writer floor is below required only in runtime --- src/main.rs | 4 ++++ src/transport/middle_proxy/health.rs | 30 +++++++++++++++++++--------- src/transport/middle_proxy/pool.rs | 10 ++++++++++ 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/main.rs b/src/main.rs index e10c18b..798790a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1051,6 +1051,10 @@ async fn main() -> std::result::Result<(), Box> { ); info!("============================================================"); + if let Some(ref pool) = me_pool { + pool.set_runtime_ready(true); + } + // Background tasks let um_clone = upstream_manager.clone(); let decision_clone = decision.clone(); diff --git a/src/transport/middle_proxy/health.rs b/src/transport/middle_proxy/health.rs index c9ad34c..1cc8d8a 100644 --- a/src/transport/middle_proxy/health.rs +++ b/src/transport/middle_proxy/health.rs @@ -295,15 +295,27 @@ async fn check_family( let wait = Duration::from_millis(next_ms) + Duration::from_millis(rand::rng().random_range(0..=jitter.max(1))); next_attempt.insert(key, now + wait); - warn!( - dc = %dc, - ?family, - alive = now_alive, - required, - endpoint_count = endpoints.len(), - backoff_ms = next_ms, - "DC writer floor is below required level, scheduled reconnect" - ); + if pool.is_runtime_ready() { + warn!( + dc = %dc, + ?family, + alive = now_alive, + required, + endpoint_count = endpoints.len(), + backoff_ms = next_ms, + "DC writer floor is below required level, scheduled reconnect" + ); + } else { + info!( + dc = %dc, + ?family, + alive = now_alive, + required, + endpoint_count = endpoints.len(), + backoff_ms = next_ms, + "DC writer floor is below required level during startup, scheduled reconnect" + ); + } } if let Some(v) = inflight.get_mut(&key) { *v = v.saturating_sub(1); diff --git a/src/transport/middle_proxy/pool.rs b/src/transport/middle_proxy/pool.rs index d553944..8cc078e 100644 --- a/src/transport/middle_proxy/pool.rs +++ b/src/transport/middle_proxy/pool.rs @@ -149,6 +149,7 @@ pub struct MePool { pub(super) me_route_no_writer_wait: Duration, pub(super) me_route_inline_recovery_attempts: u32, pub(super) me_route_inline_recovery_wait: Duration, + pub(super) runtime_ready: AtomicBool, pool_size: usize, } @@ -355,6 +356,7 @@ impl MePool { me_route_no_writer_wait: Duration::from_millis(me_route_no_writer_wait_ms), me_route_inline_recovery_attempts, me_route_inline_recovery_wait: Duration::from_millis(me_route_inline_recovery_wait_ms), + runtime_ready: AtomicBool::new(false), }) } @@ -362,6 +364,14 @@ impl MePool { self.active_generation.load(Ordering::Relaxed) } + pub fn set_runtime_ready(&self, ready: bool) { + self.runtime_ready.store(ready, Ordering::Relaxed); + } + + pub fn is_runtime_ready(&self) -> bool { + self.runtime_ready.load(Ordering::Relaxed) + } + pub fn update_runtime_reinit_policy( &self, hardswap: bool,