fix(ecstore): fence final decommission sweep

This commit is contained in:
overtrue
2026-08-23 03:15:33 +08:00
parent 4527b003cc
commit 2379bfb5a3
+9 -2
View File
@@ -4850,7 +4850,8 @@ impl ECStore {
pool: Arc<Sets>,
bucket: DecomBucketInfo,
) -> Result<()> {
self.decommission_pool(rx, idx, pool, bucket).await
self.decommission_pool(rx, idx, pool, bucket, Arc::new(Semaphore::new(decommission_entry_concurrency_limit())))
.await
}
#[tracing::instrument(skip(self, canceler))]
@@ -5013,7 +5014,13 @@ impl ECStore {
state = "verifying_completion",
"Decommission completion verification started"
);
if let Err(err) = self.check_after_decommission(idx).await {
self.ensure_decommission_generation_current(idx, generation).await?;
let operation_gate = self.ctx.decommission_operation_gate();
if let Err(err) = run_decommission_side_effect(&rx, &operation_gate, || self.check_after_decommission(idx)).await
{
if is_err_operation_canceled(&err) {
return Err(err);
}
resolve_decommission_terminal_mark_result(
self.decommission_failed_for_operation(idx, canceler).await,
"failed",