houseme
4a3d740ad3
Merge branch 'main' into test/exclude-invalid-lifecycle-vector
2026-09-06 19:44:35 +08:00
dependabot[bot]
c130d00d4b
chore(deps): bump golang.org/x/net from 0.54.0 to 0.55.0 in /scripts/compat/heal-outcome in the go_modules group across 1 directory ( #7296 )
...
chore(deps): bump golang.org/x/net
Bumps the go_modules group with 1 update in the /scripts/compat/heal-outcome directory: [golang.org/x/net](https://github.com/golang/net ).
Updates `golang.org/x/net` from 0.54.0 to 0.55.0
- [Commits](https://github.com/golang/net/compare/v0.54.0...v0.55.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/net
dependency-version: 0.55.0
dependency-type: indirect
dependency-group: go_modules
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-06 19:13:21 +08:00
dependabot[bot]
e49d9cdea2
chore(deps): bump the go_modules group across 1 directory with 2 updates ( #7288 )
...
Bumps the go_modules group with 1 update in the /scripts/compat/heal-outcome directory: [golang.org/x/crypto](https://github.com/golang/crypto ).
Updates `golang.org/x/crypto` from 0.37.0 to 0.52.0
- [Commits](https://github.com/golang/crypto/compare/v0.37.0...v0.52.0 )
Updates `golang.org/x/net` from 0.39.0 to 0.54.0
- [Commits](https://github.com/golang/net/compare/v0.39.0...v0.54.0 )
---
updated-dependencies:
- dependency-name: golang.org/x/crypto
dependency-version: 0.52.0
dependency-type: indirect
dependency-group: go_modules
- dependency-name: golang.org/x/net
dependency-version: 0.54.0
dependency-type: indirect
dependency-group: go_modules
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-06 18:56:54 +08:00
houseme
f5778d8b97
chore(deps): refresh concurrency and protocol dependencies ( #7289 )
...
chore(deps): update Crossbeam, Redis, DER, and ipnet
Refresh the shared concurrency, Redis client, DER decoding and IP network dependencies while retaining existing feature selections and the hotpath pin.
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-06 18:51:12 +08:00
Zhengchao An
9da42a899a
test(connect): refresh offline enrollment e2e chain ( #7294 )
2026-09-06 18:30:04 +08:00
overtrue
c96d83cee7
test(s3): exclude invalid lifecycle filter vector
2026-09-06 18:12:14 +08:00
Henry Guo
3d46ed312a
feat(scanner): reuse complete observed scan candidates ( #7206 )
2026-09-06 17:52:52 +08:00
Zhengchao An
3496277e7c
test(ecstore): drain source writes before corrupting shards ( #7291 )
2026-09-06 17:51:07 +08:00
cxymds
0b72f39023
fix(tier): avoid re-fencing published mutations ( #7274 )
2026-09-06 16:57:03 +08:00
Zhengchao An
30a0937a7d
fix(ecstore): retain single-delete physical namespace ownership ( #7287 )
2026-09-06 16:56:24 +08:00
houseme
5b962b6c58
feat(heal): expose compatible canonical v3 outcomes ( #7256 )
...
* feat(heal): expose compatible canonical v3 outcomes
Serialize the existing canonical heal outcome, retain the v3 summary vocabulary, and reject or conservatively adapt contradictory peer success responses. Preserve progress and bounded result cursors without treating legacy storage responses as repair proof.
Add optional SDK outcome and cursor support with shared Rust fixtures, pinned legacy Go decoder and mc polling checks, and explicit compatibility limits.
Co-Authored-By: heihutu <heihutu@gmail.com >
Co-Authored-By: zhi22915 <qiuzgang@gmail.com >
* fix(madmin): box heal stop task status outcome
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-06 16:46:42 +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
3a4afe9b38
fix(heal): bound cross-page object retry delays ( #7273 )
...
Retain failed identities in an execution-local count and byte bounded window so healthy later pages can advance. Preserve retry jitter, deadlines, terminal accounting and pressure pacing, with deterministic head-of-line and capacity regressions.
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: zhi22915 <qiuzgang@gmail.com >
2026-09-06 16:44:59 +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
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
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
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
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
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
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
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