mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-18 10:43:15 +00:00
9852e53b4c
Second batch of the #[serial] sweep started in #6209. nextest is the repository's authoritative runner and executes every test in its own process, so serial_test's in-process mutex cannot serialize tests against each other -- docs/testing/README.md documents this, and the mechanism that actually serializes across the process boundary is a .config/nextest.toml [test-groups] entry with max-threads = 1. Unlike the first batch (e2e, process-isolated by construction), these are in-crate unit tests that could genuinely share process state under the `cargo test` fallback runner, where #[serial] IS still effective. Every marker was therefore reviewed individually and removed only where the test provably touches neither the process environment nor a process-global. Removed (47, pure deletions, no test bodies touched): crates/lifecycle/src/core.rs 35 crates/scanner/src/scanner.rs 12 The lifecycle removals are all validate_* / filter_rules_* / has_active_rules_* / noncurrent_versions_expiration_limit_* tests that build a local BucketLifecycleConfiguration and call a &self method walking only that value. The scanner removals are pure duration arithmetic (randomized_cycle_delay_for, initial_scanner_delay_for with an explicit Some(secs), the bitrot-disabled early return of scanner_clean_idle_max_interval) and background_heal_info_for_scan_complete / _for_scan_result field comparisons over locally built values. Retained deliberately -- see the PR body for the full list and reasons: crates/ecstore/src/bucket/lifecycle/bucket_lifecycle_ops.rs 101 (all) crates/lifecycle/src/core.rs 44 crates/scanner/src/scanner.rs 53 bucket_lifecycle_ops.rs keeps every marker: its test module caches a process-wide `static STALE_MULTIPART_TEST_ENV: OnceLock<(Vec<PathBuf>, Arc<ECStore>)>`, and its own reregister_env_local_disks helper documents in-tree that sibling #[serial] tests reset and reshape the shared local-disk registry for each other. That sharing is real, so the markers stay. No test was renamed, added, or deleted; no reserved migration-gate name substring is affected; no .config/nextest.toml entry references any of the 47 removed tests.
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