From b53a711cc22418a90c4a3cd7e2528989b852202a Mon Sep 17 00:00:00 2001 From: houseme Date: Tue, 8 Sep 2026 00:46:33 +0800 Subject: [PATCH] fix(scanner): preserve recovery intents while disabled Co-Authored-By: heihutu Co-Authored-By: zhi22915 --- crates/scanner/src/scanner.rs | 11 ----------- crates/scanner/src/scanner/tests/recovery_control.rs | 12 ++++++------ 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/crates/scanner/src/scanner.rs b/crates/scanner/src/scanner.rs index d96f90353..08c0633fe 100644 --- a/crates/scanner/src/scanner.rs +++ b/crates/scanner/src/scanner.rs @@ -988,17 +988,6 @@ pub async fn init_scanner_with_recovery( return None; } Some(tokio::spawn(async move { - if let Err(error) = run_scanner_usage_recovery_intents_for_startup(ctx.clone(), storeapi.clone()).await { - warn!( - target: "rustfs::scanner", - event = EVENT_SCANNER_PERSIST_STATE, - component = LOG_COMPONENT_SCANNER, - subsystem = LOG_SUBSYSTEM_RUNTIME, - state = "recovery_intent_startup_discovery_failed", - error = %error, - "Disabled scanner recovery intent startup discovery failed" - ); - } if let Err(error) = resume_scanner_cycle_cleanup(ctx, storeapi).await { warn!( target: "rustfs::scanner", diff --git a/crates/scanner/src/scanner/tests/recovery_control.rs b/crates/scanner/src/scanner/tests/recovery_control.rs index dacd83a64..9191c238c 100644 --- a/crates/scanner/src/scanner/tests/recovery_control.rs +++ b/crates/scanner/src/scanner/tests/recovery_control.rs @@ -457,7 +457,7 @@ async fn scanner_recovery_intent_startup_rejects_corrupt_pending_record() { #[tokio::test] #[serial] -async fn scanner_recovery_intent_disabled_startup_executes_persisted_non_terminal_intent() { +async fn scanner_recovery_intent_disabled_startup_preserves_non_terminal_intent() { let (_dir, store) = setup_scanner_cycle_store().await; let record = match accept_scanner_usage_recovery_intent( store.clone(), @@ -473,12 +473,12 @@ async fn scanner_recovery_intent_disabled_startup_executes_persisted_non_termina let restarted = restart_scanner_cycle_store_from(&store).await; run_disabled_startup(CancellationToken::new(), restarted.clone()).await; - let completed = get_scanner_usage_recovery_intent(restarted, &record.intent_id) + let preserved = get_scanner_usage_recovery_intent(restarted, &record.intent_id) .await - .expect("startup-executed intent should read") - .expect("startup-executed intent should remain durable"); - assert_eq!(completed.state, "completed"); - assert_eq!(completed.intent_id, record.intent_id); + .expect("startup-skipped intent should read") + .expect("startup-skipped intent should remain durable"); + assert_eq!(preserved.state, "accepted"); + assert_eq!(preserved.intent_id, record.intent_id); } #[tokio::test]