overtrue
6233466c5d
chore: integrate current main for namespace target validation
2026-09-06 15:49:36 +08:00
overtrue
901d052c38
test(e2e): declare tempfile for fresh startup fixture
2026-09-06 15:45:26 +08:00
Zhengchao An
d7b7d1835f
test(admin): validate repair futures with the default stack ( #7280 )
2026-09-06 15:43:13 +08:00
houseme
b92392a04a
ci: give target repair tests larger stack ( #7272 )
2026-09-06 15:38:05 +08:00
Zhengchao An
a40ec8a6f3
fix(odm): preserve progress when list-through is disabled ( #7278 )
...
* test(odm): cover disabled list-through continuation progress
* test(odm): cover literal cache tags in disabled list cursors
* fix(odm): preserve progress when list-through is disabled
2026-09-06 15:24:59 +08:00
Zhengchao An
c99efd9477
test(admin): box remote target repair scenarios ( #7277 )
2026-09-06 15:23:30 +08:00
Zhengchao An
27d593fa35
test(odm): bypass loopback proxies in native list fixtures ( #7276 )
2026-09-06 15:22:50 +08:00
overtrue
fdb3d9f9bb
test(startup): encode observation digests with shared hex helper
2026-09-06 15:10:28 +08:00
Zhengchao An
0137d14064
test(odm): refresh verified Linux E2E selection ( #7271 )
2026-09-06 14:48:41 +08:00
houseme
1dddf357cd
test(scanner): add bounded cache cost microprofile ( #7261 )
2026-09-06 14:14:07 +08:00
houseme
395ba797fc
fix(admin): bound peer probe retries to one round deadline ( #7257 )
2026-09-06 14:13:47 +08:00
houseme
51893abfbf
feat(heal): pace running admin work at safe boundaries ( #7255 )
2026-09-06 14:13:35 +08:00
RustFS
92c17af8e3
ci(e2e): run distributed e2e on ubuntu-latest ( #7253 )
2026-09-06 14:13:21 +08:00
cxymds
f17f31a3df
feat(ilm): persist recovery controls for legacy tier journals ( #7252 )
2026-09-06 14:13:09 +08:00
Zhengchao An
1a88870809
fix(odm): preserve cursor compatibility and native source semantics ( #7238 )
2026-09-06 14:12:56 +08:00
唐小鸭
760c9d65be
fix(replication): close IAM snapshot, marker purge and broadcast gaps ( #7195 )
2026-09-06 14:12:25 +08:00
houseme
08283d1fdc
test(scanner): verify default scoped entry fallback walks ( #7241 )
2026-09-06 14:11:45 +08:00
houseme
6a323c3e91
test(heal): cover start retry and deadline outcome contracts ( #7242 )
2026-09-06 14:11:24 +08:00
overtrue
44333e136b
test(rpc): use native part size in signed fixture
2026-09-06 13:57:07 +08:00
Zhengchao An
1650f3c2a6
test(odm): verify global disable across restarts ( #7268 )
...
* test(odm): cover global disable across restarts
* test(odm): accept omitted V1 next marker
* test(odm): gate backfill GET until the crash completes
* test(odm): remove unused fault action import
* test(odm): assert GET gate suspension without network races
* test(odm): refresh verified Darwin E2E selection
2026-09-06 13:54:59 +08:00
Zhengchao An
38611d2510
fix(admin): compile metadata test helper only in tests ( #7266 )
...
fix(admin): compile metadata update facade only for tests
2026-09-06 13:28:58 +08:00
houseme
1a459d650f
chore(deps): update flake.lock ( #7264 )
...
Flake lock file updates:
• Updated input 'nixpkgs':
'github:NixOS/nixpkgs/e8be781' (2026-08-29)
→ 'github:NixOS/nixpkgs/17de0b9' (2026-09-04)
• Updated input 'rust-overlay':
'github:oxalica/rust-overlay/996e9b0' (2026-08-29)
→ 'github:oxalica/rust-overlay/c361047' (2026-09-05)
2026-09-06 13:19:50 +08:00
Zhengchao An
5aef1796cc
fix(odm): reject ambiguous native source dot segments ( #7263 )
...
* fix(odm): reject ambiguous native source dot segments
* docs(odm): align native provider limitations with implementation
2026-09-06 13:11:35 +08:00
overtrue
9e24d23c30
test(rpc): observe bootstrap CAS during fresh startup
2026-09-06 13:01:22 +08:00
Zhengchao An
a8aaadb886
fix(replication): preserve concurrent remote target changes ( #7262 )
...
* test(replication): cover concurrent remote target writes
* fix(replication): merge remote target writes under transactions
* test(replication): preserve concurrent repairs during target updates
* fix(replication): retain removal guards after request cancellation
* test(replication): enable loopback in ordinary target fixtures
* test(replication): isolate remote target mutation scenarios
* refactor(admin): keep target writes within existing boundaries
* test(replication): assert removed target cache state
* test(replication): inspect target cache before client refresh
2026-09-06 12:51:44 +08:00
overtrue
6277287399
chore(test): merge main before startup CAS coverage
2026-09-06 12:45:50 +08:00
Zhengchao An
71f1dcf859
fix(admin): follow recovery facade and error boundaries ( #7259 )
2026-09-06 12:35:54 +08:00
Zhengchao An
d44244f60f
fix(admin): preserve metadata during export and target repair ( #7258 )
...
* fix(admin): reject incomplete metadata backups
* fix(admin): repair remote targets from locked disk state
* test(admin): fence target repair against source changes
* fix(admin): report unreadable XML in metadata exports
* test(admin): enable loopback in target repair fixtures
* refactor(admin): remove unused metadata getter forwards
* test(admin): box direct target repair futures
* test(admin): box target repair scenarios at env boundary
2026-09-06 12:18:00 +08:00
Zhengchao An
d3884ed3ea
test(odm): use fixed-size Azure request chunks ( #7254 )
2026-09-06 12:10:39 +08:00
overtrue
358ff0f0e6
test(rpc): select fixture disks through the store topology
2026-09-06 11:42:53 +08:00
overtrue
1cea5fa1c4
test(rpc): retain bootstrap authority across delayed requests
2026-09-06 11:42:53 +08:00
overtrue
b1a2235cd6
fix(ecstore): keep group fsync hooks scoped to unit tests
2026-09-06 11:25:31 +08:00
overtrue
e0663c11af
test(rpc): cover signed listener binding across startup
2026-09-06 11:13:09 +08:00
Zhengchao An
282d6d5efe
fix(odm): decode encoded Azure blob names exactly once ( #7251 )
...
* fix(odm): decode encoded Azure blob names exactly once
* test(odm): cover Azure encoded name transport matrix
* test(odm): keep Azure cursor continuation query stable
2026-09-06 11:10:40 +08:00
overtrue
11c9fd64ce
fix(rpc): bind local mutations to the listener instance
2026-09-06 10:58:11 +08:00
RustFS
f0d865728c
ci(e2e): use tmpfs for distributed pool isolation ( #7207 )
...
* test(e2e): add distributed 4x4 validation
* ci(e2e): use tmpfs for distributed pool isolation
sm-standard-4 is an ARC pod without usable loop devices, so
mount -o loop fails with ENOENT before any pool filesystem is
attached. Sized tmpfs still gives each pool a distinct st_dev
and independent 1G statfs capacity.
Co-authored-by: RustFS <hello@rustfs.com >
* test(e2e): prove operations overlap data movement
---------
Co-authored-by: Zhengchao An <anzhengchao@gmail.com >
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
2026-09-06 10:52:12 +08:00
cxymds
3df39ef4d7
fix(scanner): separate write retries from movement backlog ( #7249 )
2026-09-06 10:51:46 +08:00
Zhengchao An
b0c73c1224
fix(ecstore): retain namespace owners through local disk completion ( #7245 )
...
* fix(ecstore): retain namespace owners through local physical tails
(cherry picked from commit a2f242463316e87604feadbdac5e4148140e72c0)
* test(ecstore): expose stale fsync group cleanup
* fix(ecstore): capture complete fsync worker guard
(cherry picked from commit 1dc90bb836e20ea9ee45d0a629a9201e20d231c4)
* fix(ecstore): preserve successor fsync group registration
(cherry picked from commit c7dfaad90526052e56c57dafffa4813bdcde46ca)
* test(ecstore): mark physical owner fixtures as inline
* test(ecstore): wait for namespace owner release before asserting
The namespace owner tests decided that ownership had ended when the Weak probe stopped upgrading or when the mutation lease could be reacquired. Both signals fire before the owner guard's Drop decrements the pending counter: Arc releases its strong count before running Drop, and the lease drops its locks before its owner field. The rio-v2 lane hit that window in undo_fresh_version_keeps_physical_namespace_owner_after_timeout.
Extend every drain wait to also require namespace_commits_pending() to be false, so the assertions observe the completed release instead of racing it.
2026-09-06 10:51:38 +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
e99c41a9bf
test(scanner): verify restart evidence against tested builds ( #7232 )
...
* 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 >
* test(scanner): add bounded ABBA validation harness
Refs rustfs/backlog#2266 and rustfs/backlog#2240 .
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): verify real restart evidence before release gates
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(test): bind scanner evidence to execution and build identity
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* docs(test): use the nextest workspace report directory
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(test): reap ABBA leaders only after process-group cleanup
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(test): preserve inclusive ABBA thresholds
Use decimal boundary comparisons for ABBA ratio checks and cover exact documented p99, throughput, and P1 limits.
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:22 +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
houseme
55fd73ed48
feat(heal): add pending legacy MRF migration staging ( #7219 )
...
* 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 >
* feat(heal): add explicit committed MRF snapshot reader
Refs rustfs/backlog#2263 and rustfs/backlog#2240 .
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* docs(heal): register legacy MRF inspection cleanup
State the compatibility removal condition on the source marker and in
the architecture cleanup register.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(heal): cover ambiguous complete legacy MRF replicas
Cover complete subset replicas, differing sets and unknown scope in both
disk orders, preserving all original journal evidence during inspection.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* feat(heal): stage conservative legacy MRF migration evidence
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(heal): reject incomplete migration lineage before staging
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(heal): validate migration retries against complete lineage
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(heal): keep reused MRF migration slots retryable
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(heal): cover source-change retry on reused MRF slots
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(heal): retain unmatched migration manifest evidence
---------
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:04 +08:00
houseme
1ae80c41ec
feat(heal): record canonical object and task outcomes ( #7218 )
...
* 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 >
* feat(heal): record bounded canonical object and task outcomes
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(heal): preserve cancellation and retry only failed listing pages
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(heal): preserve compatible listing EOF outcomes
Keep truncated heal listings without continuation tokens as complete compatibility EOFs and assert the canonical task outcome.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(heal): drop test locks before awaits
Limit synchronous mock mutex guards to pre-await scopes in canonical outcome tests.
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 10:50:56 +08:00
GatewayJ
9fc9b5e69c
fix(ecstore): align platform and test helper compilation ( #7214 )
...
Co-authored-by: Zhengchao An <anzhengchao@gmail.com >
2026-09-06 10:50:48 +08:00
Zhengchao An
61e0edce16
test(odm): pin gcs error classes and require the backend contracts in ci ( #7250 )
...
* test(odm): pin gcs source status-to-error-class mapping
The native GCS backend classifies every failure from the HTTP status
alone, because GCS states its error code in a body this backend never
reads. Only NotFound is negative-cached and only a retryable class may be
re-sent, so cover 401/403 -> AccessDenied, 429/503 -> Throttled,
500/502 -> ServerError and 404 -> NotFound over both HEAD and GET.
* ci(odm): require the source-backend contract tests in test-and-lint
The shared contract tests already run in ci/test-and-lint, but only
because gcs is a rustfs default feature; nothing failed if that
selection went away. Pin the S3, Azure and native GCS contracts in the
core required-test manifest so a lost selection fails the lane.
2026-09-06 10:45:09 +08:00
houseme
2b5c739343
fix(scanner): require complete publication coverage ( #7176 )
...
* 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): 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(ci): keep s3s footprint ratchet tight
Route bucket list-through test-only S3 wire types through the app storage facade again so the PR does not add a direct s3s-importing file.
Retighten the s3_error! footprint baseline to the current lower count.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(odm): expose store context after relocation
Expose the ECStore instance context through a narrow accessor so relocated on-demand migration backfill code no longer reaches into private storage fields.
Declare the faster-hex dependency used by the relocated native HTTP source implementation.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* test(scanner): stabilize usage and ODM regressions
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:43:43 +08:00
overtrue
7f631ec378
test(rpc): mark instance regression request as v2 authenticated
2026-09-06 10:21:55 +08:00
overtrue
3205f85c2a
test(rpc): preserve bootstrap metadata in instance snapshot
2026-09-06 10:21:55 +08:00
overtrue
ae87ddbe2f
test(rpc): reproduce same-UUID cross-instance rename
2026-09-06 10:21:55 +08:00
overtrue
f09aaad2a9
Merge local namespace ownership prerequisite
2026-09-06 10:21:54 +08:00