fix(ecstore): fence decommission canceler cleanup

This commit is contained in:
overtrue
2026-08-22 13:08:37 +08:00
parent 1a3be70d98
commit e1c657652f
2 changed files with 584 additions and 152 deletions
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -33,7 +33,7 @@ use crate::bucket::utils::check_put_object_part_args;
use crate::bucket::utils::{check_valid_bucket_name, check_valid_bucket_name_strict, is_meta_bucketname}; use crate::bucket::utils::{check_valid_bucket_name, check_valid_bucket_name_strict, is_meta_bucketname};
use crate::cluster::rpc::{RemoteClient, S3PeerSys}; use crate::cluster::rpc::{RemoteClient, S3PeerSys};
use crate::config::storageclass; use crate::config::storageclass;
use crate::core::pools::PoolMeta; use crate::core::pools::{DecommissionCanceler, PoolMeta};
use crate::disk::endpoint::{Endpoint, EndpointType}; use crate::disk::endpoint::{Endpoint, EndpointType};
use crate::disk::{DiskAPI, DiskInfo, DiskInfoOptions}; use crate::disk::{DiskAPI, DiskInfo, DiskInfoOptions};
use crate::error::{Error, Result}; use crate::error::{Error, Result};
@@ -176,7 +176,7 @@ pub struct ECStore {
// pub local_disks: Vec<DiskStore>, // pub local_disks: Vec<DiskStore>,
pub pool_meta: RwLock<PoolMeta>, pub pool_meta: RwLock<PoolMeta>,
pub rebalance_meta: RwLock<Option<RebalanceMeta>>, pub rebalance_meta: RwLock<Option<RebalanceMeta>>,
pub decommission_cancelers: RwLock<Vec<Option<CancellationToken>>>, pub decommission_cancelers: RwLock<Vec<Option<DecommissionCanceler>>>,
/// Serializes rebalance/decommission start transitions. /// Serializes rebalance/decommission start transitions.
/// ///
/// Lock order: acquire `start_gate` before `pool_meta`, `rebalance_meta`, /// Lock order: acquire `start_gate` before `pool_meta`, `rebalance_meta`,