From 874679e65dd29051bf8cc47c866c97e20f084ff2 Mon Sep 17 00:00:00 2001 From: junxiang Mu <1948535941@qq.com> Date: Thu, 26 Dec 2024 20:56:21 +0800 Subject: [PATCH] tmp 2 Signed-off-by: junxiang Mu <1948535941@qq.com> --- ecstore/src/cache_value/metacache_set.rs | 1 + ecstore/src/heal/background_heal_ops.rs | 10 ++++++++++ ecstore/src/set_disk.rs | 6 ++++++ 3 files changed, 17 insertions(+) diff --git a/ecstore/src/cache_value/metacache_set.rs b/ecstore/src/cache_value/metacache_set.rs index ad35d8126..098724bd8 100644 --- a/ecstore/src/cache_value/metacache_set.rs +++ b/ecstore/src/cache_value/metacache_set.rs @@ -57,6 +57,7 @@ impl Clone for ListPathRawOptions { } pub async fn list_path_raw(mut rx: B_Receiver, opts: ListPathRawOptions) -> Result<()> { + info!("list_path_raw"); if opts.disks.is_empty() { info!("list_path_raw 0 drives provided"); return Err(Error::from_string("list_path_raw: 0 drives provided")); diff --git a/ecstore/src/heal/background_heal_ops.rs b/ecstore/src/heal/background_heal_ops.rs index 74821f9f6..27ee28417 100644 --- a/ecstore/src/heal/background_heal_ops.rs +++ b/ecstore/src/heal/background_heal_ops.rs @@ -123,19 +123,26 @@ async fn monitor_local_disks_and_heal() { for disk in heal_disks.into_ref().iter() { let disk_clone = disk.clone(); futures.push(async move { + info!("1"); GLOBAL_BackgroundHealState .set_disk_healing_status(disk_clone.clone(), true) .await; + info!("2"); if heal_fresh_disk(&disk_clone).await.is_err() { + info!("heal_fresh_disk is err"); GLOBAL_BackgroundHealState .set_disk_healing_status(disk_clone.clone(), false) .await; return; } + info!("3"); GLOBAL_BackgroundHealState.pop_heal_local_disks(&[disk_clone]).await; + info!("4"); }); } + info!("monitor_local_disks_and_heal wait"); let _ = join_all(futures).await; + info!("monitor_local_disks_and_heal end"); interval.reset(); } } @@ -226,11 +233,14 @@ async fn heal_fresh_disk(endpoint: &Endpoint) -> Result<()> { let tracker = Arc::new(RwLock::new(tracker)); let qb = tracker.read().await.queue_buckets.clone(); + info!("0.4"); store.pools[pool_idx].disk_set[set_idx] .clone() .heal_erasure_set(&qb, tracker.clone()) .await?; + info!("4"); let mut tracker_w = tracker.write().await; + info!("5"); if tracker_w.items_failed > 0 && tracker_w.retry_attempts < 4 { tracker_w.retry_attempts += 1; tracker_w.reset_healing().await; diff --git a/ecstore/src/set_disk.rs b/ecstore/src/set_disk.rs index 73c646249..04617f736 100644 --- a/ecstore/src/set_disk.rs +++ b/ecstore/src/set_disk.rs @@ -1348,6 +1348,7 @@ impl SetDisks { Err(e) => { warn!("connect_endpoint err {:?}", &e); if ep.is_local && DiskError::UnformattedDisk.is(&e) { + info!("unformatteddisk will push_heal_local_disks, {:?}", ep); GLOBAL_BackgroundHealState.push_heal_local_disks(&[ep.clone()]).await; } return; @@ -3478,14 +3479,19 @@ impl SetDisks { if let Some(err) = ret_err.as_ref() { return Err(err.clone()); } + info!("step 6"); if !tracker.read().await.queue_buckets.is_empty() { return Err(Error::from_string(format!( "not all buckets were healed: {:?}", tracker.read().await.queue_buckets ))); } + info!("step 7"); + drop(result_tx); let _ = task.await; + info!("step 8"); defer.await; + info!("step 9"); Ok(()) } }