fix(scanner): preserve dirty usage convergence (#3844)

Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com>
This commit is contained in:
Henry Guo
2026-06-25 21:09:12 +08:00
committed by GitHub
parent 4cdc6ae63f
commit 30f781871d
3 changed files with 131 additions and 14 deletions
+17
View File
@@ -124,6 +124,10 @@ enum ScannerCycleWakeReason {
}
async fn wait_for_next_scanner_cycle(ctx: &CancellationToken, delay: Duration) -> ScannerCycleWakeReason {
if dirty_usage_buckets_pending() {
return ScannerCycleWakeReason::DirtyUsage;
}
let sleep = tokio::time::sleep(delay);
tokio::pin!(sleep);
@@ -1624,6 +1628,19 @@ mod tests {
crate::scanner_io::clear_dirty_usage_bucket("photos");
}
#[tokio::test]
#[serial]
async fn test_wait_for_next_scanner_cycle_sees_existing_dirty_usage() {
crate::scanner_io::clear_dirty_usage_bucket("photos");
crate::scanner_io::record_dirty_usage_bucket("photos");
let ctx = CancellationToken::new();
let reason = wait_for_next_scanner_cycle(&ctx, Duration::from_secs(60)).await;
assert_eq!(reason, ScannerCycleWakeReason::DirtyUsage);
crate::scanner_io::clear_dirty_usage_bucket("photos");
}
#[test]
#[serial]
fn test_get_cycle_scan_mode_runs_deep_until_selection_window_completes() {