mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-21 11:56:38 +00:00
095bf34086
Split the 8178-line scanner.rs (48% inline tests) into a canonical scanner.rs + scanner/ module tree with zero behavior change: - scanner.rs (~2140): cycle constants, schedule status, budget/config helpers, startup, maintenance features, the two run loops, and cycle-result finalization - scanner/activity.rs (~770): wake/backoff policy and scanner activity observation (probing, generations, topology digest) - scanner/heal_info.rs (~110): the background-heal info object - scanner/cycle_state.rs (~500): cycle-state codec, persisted usage floors, and cycle-state persistence - scanner/leadership.rs (~360): leader-lock claiming, usage-epoch fencing, and lock-loss handling - scanner/usage_store.rs (~480): the CAS data-usage store pipeline and observed-snapshot cleanup - scanner/tests.rs (~3920): the inline test module as a child module All crate paths are unchanged: scanner::BackgroundHealInfo, scanner::read_background_heal_info, scanner::store_data_usage_in_backend, and scanner_topology_digest resolve through root re-exports with their original visibilities, and the pub(crate) surface used by scanner_io and remote_scanner re-exports at pub(crate). Cross-module items gain pub(super), whose scope equals the old single-module privacy domain. Code is moved verbatim apart from those markers, per-module import headers, and rustfmt re-wraps. Co-authored-by: heihutu <heihutu@gmail.com>
RustFS Scanner
RustFS Scanner is the background maintenance scan loop. It handles usage accounting, lifecycle expiry and transition admission, bucket replication repair admission, scanner-driven heal/bitrot checks, and namespace alerts.
For operator-facing runtime controls, status fields, and tuning workflows, see Scanner Runtime Controls. For repeatable scanner-pressure validation, see Scanner Benchmark Runbook.
Chinese documentation is available in README.zh-CN.md.
Development
Build
cargo build --package rustfs-scanner
Test
cargo test --package rustfs-scanner
License
Apache License 2.0