mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-09 22:59:59 +00:00
refactor: integrate disk healing into erasure set healing
- Remove HealType::Disk and related disk-specific healing methods - Integrate disk format healing into heal_erasure_set with include_format_heal option - Update auto disk scanner to use ErasureSet heal type instead of Disk heal - Fix disk status change event handling to use ErasureSet heal requests - Add proper bucket list retrieval for auto healing scenarios - Update data scanner to submit ErasureSet heal tasks for offline disks - Remove duplicate healing logic between Disk and ErasureSet types - Ensure all healing operations go through unified ErasureSet healing path
This commit is contained in:
@@ -3468,7 +3468,7 @@ impl SetDisks {
|
||||
return Err(Error::other(format!("unable to get disk information before healing it: {err}")));
|
||||
}
|
||||
};
|
||||
let num_cores = num_cpus::get(); // 使用 num_cpus crate 获取核心数
|
||||
let num_cores = num_cpus::get(); // use num_cpus crate to get the number of cores
|
||||
let mut num_healers: usize;
|
||||
|
||||
if info.nr_requests as usize > num_cores {
|
||||
@@ -3577,44 +3577,6 @@ impl SetDisks {
|
||||
continue;
|
||||
}
|
||||
|
||||
// let vc: VersioningConfiguration;
|
||||
// let lc: BucketLifecycleConfiguration;
|
||||
// let lr: ObjectLockConfiguration;
|
||||
// let rcfg: ReplicationConfiguration;
|
||||
// if !is_rustfs_meta_bucket_name(bucket) {
|
||||
// vc = match get_versioning_config(bucket).await {
|
||||
// Ok((r, _)) => r,
|
||||
// Err(err) => {
|
||||
// ret_err = Some(err);
|
||||
// info!("get versioning config failed, err: {}", err.to_string());
|
||||
// continue;
|
||||
// }
|
||||
// };
|
||||
// lc = match get_lifecycle_config(bucket).await {
|
||||
// Ok((r, _)) => r,
|
||||
// Err(err) => {
|
||||
// ret_err = Some(err);
|
||||
// info!("get lifecycle config failed, err: {}", err.to_string());
|
||||
// continue;
|
||||
// }
|
||||
// };
|
||||
// lr = match get_object_lock_config(bucket).await {
|
||||
// Ok((r, _)) => r,
|
||||
// Err(err) => {
|
||||
// ret_err = Some(err);
|
||||
// info!("get object lock config failed, err: {}", err.to_string());
|
||||
// continue;
|
||||
// }
|
||||
// };
|
||||
// rcfg = match get_replication_config(bucket).await {
|
||||
// Ok((r, _)) => r,
|
||||
// Err(err) => {
|
||||
// ret_err = Some(err);
|
||||
// info!("get replication config failed, err: {}", err.to_string());
|
||||
// continue;
|
||||
// }
|
||||
// };
|
||||
// }
|
||||
let (mut disks, _, healing) = self.get_online_disk_with_healing_and_info(true).await?;
|
||||
if disks.len() == healing {
|
||||
info!("all drives are in healing state, aborting..");
|
||||
@@ -3645,17 +3607,6 @@ impl SetDisks {
|
||||
let fallback_disks = disks[expected_disk..].to_vec();
|
||||
disks = disks[..expected_disk].to_vec();
|
||||
|
||||
//todo
|
||||
// let filter_life_cycle = |bucket: &str, object: &str, fi: FileInfo| {
|
||||
// if lc.rules.is_empty() {
|
||||
// return false;
|
||||
// }
|
||||
// // todo: versioning
|
||||
// let versioned = false;
|
||||
// let obj_info = fi.to_object_info(bucket, object, versioned);
|
||||
//
|
||||
// };
|
||||
|
||||
let result_tx_send = result_tx.clone();
|
||||
let bg_seq_send = bg_seq.clone();
|
||||
let send = Box::new(move |result: HealEntryResult| {
|
||||
|
||||
Reference in New Issue
Block a user