houseme
4ec063e55f
feat(scanner): accept durable recovery intents
...
Add a CAS-backed scanner usage recovery intent record for async full rebuild admission. The admin reset endpoint can now persist and replay idempotent intent acceptance before returning 202, and a read-only status route exposes the durable request state.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
2026-09-07 11:47:06 +08:00
houseme
fbd30a6f43
test(scanner): cover concurrent cycle reset convergence ( #7335 )
...
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-07 10:28:37 +08:00
houseme
a32360198c
test(scanner): cover scoped ack resolver fallback ( #7332 )
...
* test(scanner): cover scoped ack resolver fallback
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): reduce scoped resolver helper args
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
---------
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-07 10:28:19 +08:00
唐小鸭
4d1ce9618a
fix(scanner): pass dirty scopes to distributed scope resolution ( #7329 )
2026-09-07 07:42:17 +08:00
houseme
f6c2a9bfe0
test(scanner): cover overflow service cohort rotation ( #7324 )
2026-09-07 05:29:59 +08:00
houseme
409ac3de66
test(scanner): cover reset cleanup process crash boundaries ( #7326 )
2026-09-07 05:29:14 +08:00
houseme
f4049598e4
feat(scanner): send scoped dirty usage acknowledgements ( #7322 )
2026-09-07 05:28:50 +08:00
Henry Guo
975983abdd
feat(scanner): reuse clean local bucket prefixes ( #7208 )
2026-09-07 05:26:56 +08:00
houseme
7de6ac82e1
test(scanner): cover reset cleanup across store reopen ( #7317 )
...
Add a real ECStore reopen regression for scanner usage-state reset cleanup boundaries. The fixture seeds each partially completed cleanup state, recreates the store, then verifies the reset resumes without rewriting the bootstrap intent or deleting unrelated metadata.
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-06 23:40:31 +08:00
houseme
1b1e590df7
test(scanner): verify quota state across reset and owner restart ( #7303 )
...
* test(scanner): verify quota state across reset and owner restart
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix: restore ILM transition and lifecycle validation (#7312 )
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-06 23:26:01 +08:00
houseme
086ee8e48a
fix(scanner): require root publication proof before dirty ack ( #7297 )
...
* fix(scanner): require root publication proof before dirty ack
Bind ACK expectations to validated scan candidates and confirm the actual primary-root revision and readback. Retain saved outcomes and dirty responsibility when stronger evidence is unavailable. Isolate CAS attempt confirmation and invalidate proof after scope mutations.
Revalidate observed candidate reuse before issuing a new publication proof, preserve the exact validated authoritative baseline work digest, and settle fixture commit tails before stable maintenance scans. Keep scoped ACK production disabled.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix: restore ILM transition and lifecycle validation (#7316 )
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-06 23:25:40 +08:00
Zhengchao An
2baba1bda7
fix(scanner): preserve verified maintenance digest ( #7293 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-09-06 21:20:58 +08:00
Zhengchao An
bf2ca9113f
test(scanner): settle fixture writes before activity baseline ( #7290 )
2026-09-06 21:20:46 +08:00
Henry Guo
3d46ed312a
feat(scanner): reuse complete observed scan candidates ( #7206 )
2026-09-06 17:52:52 +08:00
houseme
0ee5408b94
feat(scanner): preserve bounded bootstrap admission fairness ( #7260 )
...
feat(scanner): retain bounded bootstrap admission fairness
Keep a leader-local bounded cohort across scanner retries and preserve
waiting bucket priority during dirty arrivals and capacity overflow.
Order source permits in the dispatcher without changing result identity,
parent budgets, explicit cycle timing, or persistent coverage evidence.
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-06 16:45:57 +08:00
houseme
cb3100a252
fix(scanner): visit compacted subtrees during deep scans ( #7270 )
...
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-06 16:45:17 +08:00
houseme
71859ff83c
fix(scanner): resume committed cleanup when scanning is disabled ( #7281 )
...
Run one supervised cleanup attempt for an existing operator reset, with
strict phase and revision checks under the original leader lock. Keep v3
reset authorization and responses unchanged, report deferred status, and
bound probe and shutdown waits without aborting in-flight reset ownership.
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-06 16:44:45 +08:00
houseme
cb72df269a
fix(heal): retain hints without verified repair receipts ( #7275 )
...
Stop task completion and legacy notices from discharging scanner retry hints. Preserve existing hints and their retry due time across admission observations, bound retry scheduling, and synchronize changed batches once even on cancellation.
Exercise the production MRF consumer, manager, event channel and scanner ledger. Document producer durability gaps without enabling successor activation or garbage collection.
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-06 16:44:30 +08:00
houseme
1dddf357cd
test(scanner): add bounded cache cost microprofile ( #7261 )
2026-09-06 14:14:07 +08:00
houseme
08283d1fdc
test(scanner): verify default scoped entry fallback walks ( #7241 )
2026-09-06 14:11:45 +08:00
cxymds
3df39ef4d7
fix(scanner): separate write retries from movement backlog ( #7249 )
2026-09-06 10:51:46 +08:00
houseme
54c11ef28b
test(scanner): bound segment observation diagnostics ( #7240 )
...
* test(scanner): bound segment observation diagnostics
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): observe committed fixture changes during walks
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): validate segment fixture metadata and off state
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
Co-authored-by: overtrue <anzhengchao@gmail.com >
2026-09-06 10:51:30 +08:00
houseme
fddecf0afe
test(scanner): diagnose raw enumeration across restarts ( #7228 )
...
* test(scanner): diagnose raw enumeration across process restarts
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): observe the canonical synthetic disk path
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): reject unobserved enumeration budget evidence
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): remove redundant disk path clone
* fix(app): keep list-through header import test-only
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
Co-authored-by: overtrue <anzhengchao@gmail.com >
2026-09-06 10:51:14 +08:00
cxymds
941fae61a0
fix(ilm): persist bounded transition recovery controls ( #7200 )
...
* fix(ilm): persist bounded transition recovery controls
* test(ilm): keep expiry sentinel within control range
* fix(ilm): repair recovery control CI regressions
---------
Co-authored-by: overtrue <anzhengchao@gmail.com >
2026-09-06 10:10:24 +08:00
houseme
159dc13548
fix(scanner): bind resumable scans and cache publication coverage ( #7210 )
...
* chore(deps): refresh scanner heal batch dependency baseline
Regenerate compatible lockfile selections before the next implementation
batch. Cargo upgrade leaves direct requirements unchanged.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(ecstore): remove duplicate local rename implementation
Keep the canonical commit module after concurrent storage changes merged.
The control-write and rollback changes are already present there.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* chore(deps): refresh profiling dependencies for the next batch
Update hotpath and its macro crate to the compatible patch release before
the next dependency-ready implementation tasks.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(deps): preserve supported hotpath focus expressions
Keep the profiler runtime before its regex-lite compatibility regression.
Track the opt-in validation required to remove this constraint in backlog.
Refs rustfs/backlog#2302 .
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(scanner): require complete publication coverage
Refs rustfs/backlog#2261 and rustfs/backlog#2240 .
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(scanner): retain scoped partial coverage across dirty plans
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(scanner): keep stable snapshot rescan behavior
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(scanner): verify coverage receipts and scan strength
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): use valid modification times in checkpoint fixtures
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(scanner): keep maintenance cycles outside dirty bucket scopes
Force complete bucket scope for deep scans and scheduled maintenance while
preserving the existing planner for verified ordinary dirty work.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(scanner): refresh scope safety independently of idle backoff
Inspect maintenance on multi-disk startup and refresh changed or failed
evidence even when explicit bitrot configuration disables idle backoff.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(scanner): bind bucket cache reuse to scan work requirements
Carry stable scan mode and full-maintenance requirements in the existing
opaque bucket digest before local and remote cache admission. Different
requirements cannot replay a same-cycle Normal cache after root delivery
failure; matching requirements remain reusable for the same intent.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(scanner): fence set snapshot reuse with the scan work proof
Prevent same-cycle set publication from replacing freshly scanned maintenance
results with an older Normal aggregate. Recognize uniform completed
maintenance baselines when planning later ordinary dirty-bucket work.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): reproduce same-cycle dirty aggregate replay
Cover a Normal-to-Normal retry with a new dirty bucket generation after
bucket persistence and root delivery failure.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(scanner): fence same-cycle caches with full activity coverage
Keep structural baseline identity separate from the full activity coverage
required by bucket admission and set publication. Require complete set
coverage proofs while retaining revision CAS and epoch regression checks.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): supply explicit coverage in publication fixtures
Keep the confirmed-empty namespace fixture authoritative under the required
coverage contract and qualify the bucket cache metadata test type.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): verify joint checkpoint coverage metadata
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(scanner): satisfy cache prefix sort lint
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
Co-authored-by: Zhengchao An <anzhengchao@gmail.com >
2026-09-06 07:27:18 +08:00
Zhengchao An
e2a921bc16
fix(storage): harden ODM and scanner publication ( #7187 )
...
* fix(storage): harden ODM and scanner publication
* fix(app): simplify absent SSE configuration matching
* test(heal): settle PUT rename tails before disk-wipe fixtures
* fix(ecstore): remove duplicate local rename implementation
Keep the canonical commit module after concurrent storage changes merged.
The control-write and rollback changes are already present there.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(ci): satisfy new clippy lints
* style(scanner): order merged test imports
* fix(scanner): invalidate bucket work after namespace completion
* fix(scanner): fence cached snapshots by scan execution
---------
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-05 13:47:12 +00:00
houseme
acfeef55ab
feat(scanner): add bounded incarnation-scoped ACK receiver ( #7182 )
...
* chore(deps): refresh SDKs and pin clock skew regression coverage
Refresh compatible dependencies for Scanner/Heal V2 batch 1 and verify
the production S3 retry/signing path with a deterministic clock.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* feat(scanner): add bounded incarnation-scoped ACK receiver
Refs rustfs/backlog#2265 and rustfs/backlog#2240 .
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-05 08:54:55 +00:00
houseme
42c32381b6
fix(scanner): make reset cleanup safely reentrant ( #7180 )
...
* chore(deps): refresh SDKs and pin clock skew regression coverage
Refresh compatible dependencies for Scanner/Heal V2 batch 1 and verify
the production S3 retry/signing path with a deterministic clock.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(scanner): make reset cleanup safely reentrant
Refs rustfs/backlog#2264 and rustfs/backlog#2240 .
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-05 08:45:53 +00:00
Henry Guo
2d159635ed
feat(scanner): plan dirty bucket cache refreshes ( #7146 )
...
* feat(scanner): plan dirty bucket cache refreshes
* fix(scanner): route peer snapshot through storage boundary
---------
Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com >
Co-authored-by: cxymds <cxymds@gmail.com >
Co-authored-by: Zhengchao An <anzhengchao@gmail.com >
2026-09-05 16:32:02 +08:00
houseme
2e4ab045b6
test(scanner): add durable checkpoint diagnostics ( #7175 )
...
* chore(deps): refresh SDKs and pin clock skew regression coverage
Refresh compatible dependencies for Scanner/Heal V2 batch 1 and verify
the production S3 retry/signing path with a deterministic clock.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): add durable checkpoint diagnostics
Refs rustfs/backlog#2260 and rustfs/backlog#2240 .
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-05 07:34:29 +00:00
Henry Guo
923bde6904
feat(scanner): prepare scoped bucket cache scans ( #7136 )
...
Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com >
2026-09-04 15:09:58 +00:00
Henry Guo
f16a30b231
feat(scanner): expose authenticated dirty bucket snapshots ( #7122 )
...
* feat(scanner): add peer bucket dirty snapshots
* fix(scanner): keep dirty snapshot errors stable
* test(protos): satisfy dirty snapshot clippy
* fix(scanner): satisfy dirty snapshot clippy
---------
Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com >
2026-09-04 18:23:13 +08:00
cxymds
80c88a9031
fix(ilm): delete historical null versions by exact identity ( #7109 )
2026-09-04 08:14:47 +08:00
Henry Guo
3a914b429d
fix(scanner): preserve explicit cycle retry cadence ( #7107 )
...
Co-authored-by: houseme <housemecn@gmail.com >
2026-09-03 22:30:46 +08:00
houseme
62e66baf89
feat(scanner): add storage seam ( #7105 )
2026-09-03 20:31:59 +08:00
cxymds
a6cb34c7a4
fix: fence transition transaction recovery ( #7095 )
2026-09-03 10:38:30 +00:00
houseme
0e6ee3bf62
feat(scanner): coordinate usage and workload boundaries ( #7093 )
...
* test(scanner): wire usage and heal rebuild gates
* docs(scanner): define usage authority protocol
* docs(heal): clarify scanner and ecstore boundaries
* refactor(scanner): split metrics from contracts
* feat(scanner): use shared workload snapshots
* fix(ecstore): recheck capacity before decommission drain
2026-09-03 17:02:43 +08:00
houseme
2e2bc814b1
fix(scanner): align usage floor compat marker ( #7064 )
...
fix(scanner): accept bootstrap marker on timeout fence
2026-09-02 14:03:04 +00:00
houseme
99f85ca2b1
fix(scanner): recover fenced incomplete usage floors ( #7055 )
...
* fix(scanner): recover fenced incomplete usage floors
* fix(scanner): validate legacy usage floor shape
Co-Authored-By: heihutu <heihutu@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
2026-09-02 12:32:31 +00:00
cxymds
afc66b7182
fix(ilm): enqueue committed tier free versions ( #7041 )
...
* fix(ilm): enqueue committed tier free versions
* fix(ilm): stabilize causal cleanup CI coverage
* test(ilm): make expire GET race deterministic
* test(ilm): synchronize expiry with active GET
2026-09-02 11:08:28 +00:00
cxymds
6e26769265
fix(ecstore): make transitioned cleanup crash-safe ( #6978 )
...
* fix(ecstore): fence transitioned object cleanup
* fix(ecstore): address ILM recovery review findings
* fix(ecstore): complete crash-safe tier cleanup recovery
* test(ecstore): avoid typo false positive
* fix(ecstore): stabilize decommission error buckets
* fix(ecstore): stabilize transition delete validation
* fix(ecstore): resume authorized tier delete dispatch
* fix(ecstore): satisfy feature clippy
2026-09-01 19:09:22 +08:00
houseme
ab44ae7e83
fix(scanner): add supported usage state reset ( #6972 )
...
Add an authenticated scanner usage-state reset endpoint that publishes a fenced bootstrap marker for full rebuilds instead of requiring operators to delete usage metadata by hand.
Guard the reset with the scanner leader lock, storage publication epoch, and per-slot revision preconditions, and make startup resumable across stale cleanup leftovers while still rejecting newer conflicting usage state.
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: Zhengchao An <anzhengchao@gmail.com >
2026-09-01 01:51:46 +00:00
houseme
e44007012b
fix(scanner): recover legacy usage floor from backup ( #6964 )
...
* fix(scanner): recover legacy usage floor from backup
Allow scanner usage-floor startup and leadership fencing to use a valid legacy backup when the legacy primary read fails with a corruption-shaped error.
Keep v2 primary read failures, stale metadata, transient I/O, and missing or invalid backups fail-closed.
Co-Authored-By: heihutu <heihutu@gmail.com >
* fix(scanner): cover legacy backup fencing gaps (#6966 )
* fix(scanner): recover legacy usage from valid backup
* fix(scanner): recover legacy usage floor from backup
Allow scanner usage-floor startup and leadership fencing to use a valid legacy backup when the legacy primary read fails with a corruption-shaped error.
Keep v2 primary read failures, stale metadata, transient I/O, and missing or invalid backups fail-closed.
Co-Authored-By: heihutu <heihutu@gmail.com >
* fix(scanner): cover legacy backup fencing gaps
---------
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: heihutu <heihutu@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: Henry Guo <marshawcoco@gmail.com >
2026-09-01 00:01:38 +08:00
houseme
281e40f1cc
fix(scanner): fit usage persistence within publication lease ( #6967 )
...
Lower the default scanner cache save timeout so the derived usage persistence budget stays inside the effective distributed publication lease window.
Add focused regressions for the default publication budget and bootstrap-pending observational baselines, and update operator docs with the new default.
Co-authored-by: heihutu <heihutu@gmail.com >
2026-08-31 22:58:29 +08:00
唐小鸭
35456bcede
test(scanner): serialize tests sharing process-global scanner state ( #6940 )
...
Under the cargo test fallback (threads in one process), tests that touch
the process-global scanner cycle recovery status or the global usage-save
metrics raced each other and failed randomly in full-suite runs.
Mark all touchers with #[serial] per docs/testing/README.md:
- 22 tests reading or writing scanner_cycle_recovery_status() via
load_scanner_cycle_state_for_startup / reset_scanner_cycle_recovery
- 24 tests mutating global_metrics() usage-save counters via
store_data_usage_in_backend*, which raced the existing serial
test_deferred_usage_save_keeps_last_real_save_metric
No-op under nextest, which isolates each test in its own process.
2026-08-31 18:20:25 +08:00
Zhengchao An
c4ac11d22e
fix(scanner): persist decommission catch-up debt ( #6922 )
2026-08-31 08:45:36 +08:00
houseme
8ecd8f2520
fix(scanner): preserve cache cycle during usage recovery ( #6921 )
...
Co-authored-by: heihutu <heihutu@gmail.com >
2026-08-31 00:19:54 +00:00
houseme
fca1514aac
fix(scanner): recover legacy empty usage floor ( #6914 )
...
Co-authored-by: heihutu <heihutu@gmail.com >
2026-08-31 06:17:26 +08:00
唐小鸭
1370434f3a
fix(scanner): unblock quota usage baseline on never-converged sites ( #6896 )
2026-08-31 00:20:04 +08:00
houseme
ee39e4fccb
fix(scanner): own publication mutations through storage drain ( #6867 )
...
* fix(scanner): own publication mutations through storage drain
Co-Authored-By: heihutu <heihutu@gmail.com >
* fix(storage): remove unused rename data shim
Co-Authored-By: heihutu <heihutu@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
2026-08-30 02:39:07 +00:00