ME Adaptive Floor Upper-Limit

This commit is contained in:
Alexey
2026-03-07 17:27:56 +03:00
parent 5ac0ef1ffd
commit 5f77f83b48
18 changed files with 724 additions and 44 deletions

View File

@@ -71,6 +71,7 @@ impl MePool {
target_writers,
rng_clone,
connect_concurrency,
true,
)
.await
});
@@ -114,6 +115,7 @@ impl MePool {
target_writers,
rng_clone_local,
connect_concurrency,
false,
)
.await
});
@@ -147,6 +149,7 @@ impl MePool {
target_writers: usize,
rng: Arc<SecureRandom>,
connect_concurrency: usize,
allow_coverage_override: bool,
) -> bool {
if addrs.is_empty() {
return false;
@@ -180,9 +183,17 @@ impl MePool {
let pool = Arc::clone(&self);
let rng_clone = Arc::clone(&rng);
let endpoints_clone = endpoints.clone();
let generation = self.current_generation();
join.spawn(async move {
pool.connect_endpoints_round_robin(dc, &endpoints_clone, rng_clone.as_ref())
.await
pool.connect_endpoints_round_robin_with_generation_contour(
dc,
&endpoints_clone,
rng_clone.as_ref(),
generation,
super::pool::WriterContour::Active,
allow_coverage_override,
)
.await
});
}
@@ -212,12 +223,25 @@ impl MePool {
return true;
}
if !progress {
warn!(
dc = %dc,
alive = alive_after,
target_writers,
"All ME servers for DC failed at init"
);
let active_writers_current = self.active_contour_writer_count_total().await;
let active_cap_configured = self.adaptive_floor_active_cap_configured_total();
if !allow_coverage_override && active_writers_current >= active_cap_configured {
info!(
dc = %dc,
alive = alive_after,
target_writers,
active_writers_current,
active_cap_configured,
"ME init saturation stopped by active writer cap"
);
} else {
warn!(
dc = %dc,
alive = alive_after,
target_writers,
"All ME servers for DC failed at init"
);
}
return false;
}