RustFS
1fb5d5a19d
docs: remove ROSS Index badge from README ( #6514 )
...
Drop the expired Q4 2025 Runa Capital badge from the English and Chinese project READMEs.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-24 18:04:46 +08:00
Zhengchao An
8bd6d8c4db
fix(build): restore mimalloc workspace dependency
2026-08-24 17:26:54 +08:00
Zhengchao An
8f2b91f79b
fix(ci): refresh e2e full selection
2026-08-24 17:25:45 +08:00
cxymds
c2b2b4ffd4
fix(ci): repair post-merge test gates
2026-08-24 17:01:29 +08:00
Zhengchao An
4ceed58be4
docs(operations): document rebalance impact assessment
2026-08-24 17:00:19 +08:00
Zhengchao An
507faf3a6a
fix(ci): restore post-merge test gates
2026-08-24 16:42:03 +08:00
Henry Guo
1607e9a376
fix(table-catalog): return 503 when commit authority is unavailable
2026-08-24 16:12:57 +08:00
Henry Guo
f06b004f2d
fix(scanner): clarify follower status
2026-08-24 16:12:29 +08:00
cxymds
41546dee5d
test(ilm): isolate multipart compensation stack
2026-08-24 16:11:29 +08:00
Zhengchao An
7d3f5545e7
fix(ci): repair post-merge build gates
2026-08-24 16:10:24 +08:00
Zhengchao An
d293ed71e5
test(e2e): require authorization denial codes ( #6497 )
2026-08-24 14:35:28 +08:00
houseme
114bb4acec
perf(ecstore): add bucket existence cache and allocator feature flags ( #6496 )
...
## Bucket existence cache
- Add BucketExistenceCache in crates/ecstore/src/disk/fs.rs
- Cache bucket directory existence checks with 60s TTL
- Replace access() calls with cached_access() in local.rs
- Add invalidate_bucket_cache() for cache invalidation on create/delete
- Reduces statx syscalls by 89% (from 10,716/s to 1,186/s)
## Allocator feature flags
- Add mimalloc and jemalloc features to rustfs/Cargo.toml
- Default: system allocator (Rust built-in)
- --features mimalloc: mimalloc allocator
- --features jemalloc: jemalloc allocator
- Allows A/B testing different allocators
## Performance impact
- 1KiB PUT: 861 obj/s (unchanged, futex is main bottleneck)
- statx reduction: 89% (from 10,716/s to 1,186/s)
- Main bottleneck remains mimalloc internal synchronization
Ref: rustfs/backlog#2005
Ref: microsoft/mimalloc#1372
Co-authored-by: hector <hetor@rustfs.com >
Co-authored-by: heihutu <heihutu@gmail.com >
Co-authored-by: overtrue <anzhengchao@gmail.com >
2026-08-24 14:35:04 +08:00
Zhengchao An
29272480bd
test(e2e): refresh Linux full-suite selection ( #6495 )
2026-08-24 14:32:19 +08:00
Zhengchao An
e136e95a20
test(e2e): fail closed on missing socket oracle ( #6493 )
2026-08-24 14:32:11 +08:00
Zhengchao An
f4ce1a8b3a
test(e2e): fail closed on compression disk probes ( #6492 )
2026-08-24 14:32:02 +08:00
Zhengchao An
9681f19bec
test(ci): require dependency-aware readiness ( #6491 )
...
* test(e2e): fail closed on runner readiness
* test(ci): require dependency-aware readiness
2026-08-24 14:31:38 +08:00
Zhengchao An
20a9c12f86
test(e2e): fail closed on runner readiness ( #6490 )
2026-08-24 14:31:21 +08:00
Zhengchao An
86e969f63c
fix(ecstore): complete rename tails after quorum ack ( #6489 )
2026-08-24 14:30:50 +08:00
Zhengchao An
51272d34dd
fix(app): restore stable Rust 1.98 builds ( #6487 )
...
* chore(scanner): narrow s3s DTO references
* fix(app): scope usage overlay import to tests
* fix(app): bound object-lock lookup future
* fix(log-analyzer): follow decommission migration logs
2026-08-24 14:30:25 +08:00
Zhengchao An
cd1363d519
fix(scanner): restore s3s footprint baseline ( #6486 )
...
chore(scanner): narrow s3s DTO references
2026-08-24 14:30:16 +08:00
Zhengchao An
5142775387
test(e2e): require 404 absence oracles ( #6485 )
2026-08-24 14:30:05 +08:00
dependabot[bot]
2ed08c8bad
chore(deps): bump p256 from 0.13.2 to 0.14.0 in the dependencies group ( #6481 )
...
* chore(deps): bump p256 from 0.13.2 to 0.14.0 in the dependencies group
Bumps the dependencies group with 1 update: [p256](https://github.com/RustCrypto/elliptic-curves ).
Updates `p256` from 0.13.2 to 0.14.0
- [Commits](https://github.com/RustCrypto/elliptic-curves/compare/p256/v0.13.2...p256/v0.14.0 )
---
updated-dependencies:
- dependency-name: p256
dependency-version: 0.14.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: dependencies
...
Signed-off-by: dependabot[bot] <support@github.com >
* update crate version and remove rustfs-mimalloc-sys crate
* fix(connect): adapt p256 signing APIs
Use the p256 0.14 Generate trait for device key generation and update low-S normalization calls for ecdsa 0.17.
Remove an unused object usecase import so warning-deny builds stay clean.
Co-Authored-By: heihutu <heihutu@gmail.com >
* fix(connect): update p256 canonical signature checks
Co-Authored-By: heihutu <heihutu@gmail.com >
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: houseme <housemecn@gmail.com >
Co-authored-by: heihutu <heihutu@gmail.com >
2026-08-24 14:29:56 +08:00
Henry Guo
60a0b1d6e7
fix(ecstore): avoid nested prefix listing amplification ( #6473 )
...
* fix(ecstore): avoid nested prefix listing probes
* fix(app): scope usage overlay import to tests
---------
Co-authored-by: Henry Guo <marshawcoco@users.noreply.github.com >
2026-08-24 14:29:35 +08:00
Zhengchao An
170a4c7640
fix(scanner): bootstrap pristine usage baseline ( #6471 )
...
* fix(ecstore): fence pool metadata replica updates
* fix(ecstore): block decommission on unsafe pool metadata
* fix(ecstore): block writes after pool metadata save errors
* fix(ecstore): latch pool metadata writes before await
* fix(scanner): bootstrap pristine usage baseline
2026-08-24 14:29:09 +08:00
唐小鸭
fc98dbb654
fix(replication): tolerate orphaned resync intents at startup ( #6470 )
...
* fix(replication): tolerate orphaned resync intents at startup
Since #5215 (1.0.0-beta.12) startup reconciles every pending/started
resync intent in resync.bin against the bucket's configured targets and
aborts the whole server when an intent has no matching target ARN. A
resync whose remote target was later removed leaves exactly such an
orphan on disk, so every later start fails with "accepted replication
resync target ... is not configured" regardless of the binary version.
Skip orphaned intents with a warning instead of failing startup; the
resync routine already settles them to ResyncFailed. Cancel the intent
when its remote target is removed so the orphan is not created again.
Fixes #4784
* fix(replication): cancel removed-target resync under the admission lock
Canceling through this node's cached whole-bucket status map could
persist a map that predates another node's admission, erasing that
node's durable restart intent. Reload resync.bin under the bucket
admission lock, publish the fresh map, and only then mark the removed
target's intent canceled. Two-node regression covers the clobber.
* fix(replication): persist resync status via ETag CAS merge
mark_status, the periodic saver, admission, and removed-target
cancellation all persisted their node's cached whole-bucket map, so any
one node's stale cache could resurrect states another node had already
finalized (a canceled intent flipping back to Pending, an admission
vanishing). All resync.bin writers now go through update_resync_status_cas:
load the freshest document with its ETag, apply a per-target mutation
with staleness and canceled-is-terminal guards re-checked against the
persisted entry, and save conditionally, retrying on concurrent writes.
The periodic saver merges per target, letting terminal states and newer
admissions recorded elsewhere win. Cache convergence stays per-target so
locally running resyncs keep their authoritative progress counters.
Regressions: stale_peer_status_write_cannot_resurrect_canceled_intent
(node B's pre-cancel cache marking its own run Started must not revive
node A's canceled intent) plus unit coverage for the periodic-save merge.
* test(ecstore): rename resync test helper off the guarded contract name
fn resync_target is on the architecture guard's reserved list for
crates/replication operation contracts; the merge-test helper now reads
resync_target_state.
* fix(replication): serialize resync status updates
---------
Co-authored-by: overtrue <anzhengchao@gmail.com >
2026-08-24 14:25:44 +08:00
Zhengchao An
e091a7e702
fix(ecstore): fence pool metadata replica updates ( #6466 )
...
* fix(ecstore): fence pool metadata replica updates
* fix(ecstore): block decommission on unsafe pool metadata
* fix(ecstore): block writes after pool metadata save errors
* fix(ecstore): latch pool metadata writes before await
2026-08-24 14:25:19 +08:00
cxymds
eec0e0e056
fix(scanner): fence movement generation publication ( #6461 )
...
* feat(scanner): add movement generation fencing
* fix(scanner): prioritize unverified cycle deferral
* feat(ecstore): add scanner publication lease fence
* feat(rpc): add scanner publication lease protocol
* feat(scanner): hold remote leases through usage publish
* test(scanner): cover publication lease fencing
* fix(scanner): fence remote leases across restart and delay
* feat(rpc): fence scanner publication rename writes
* fix(scanner): fence observed cleanup deletes
* fix(proto): qualify lease release test types
* fix(scanner): pin movement notifications
* fix(scanner): clean publication imports
* fix(ecstore): satisfy scanner fence clippy
* refactor(scanner): group wait and publication options
* fix(scanner): satisfy final lint and facade guards
* fix(rpc): resolve facade export conflicts
* fix(ci): remove unused decommission and healing facades
* fix(ci): cfg-gate test-only usage overlay import
* fix(scanner): wake on remote scanner restart
2026-08-24 14:17:35 +08:00
cxymds
1c5c28842a
fix(scanner): reject duplicate usage updates ( #6445 )
...
* fix(scanner): reject duplicate usage updates
* style: format decommission test imports
* fix(ci): remove unused decommission and healing facades
* fix(ci): cfg-gate test-only usage overlay import
---------
Co-authored-by: houseme <housemecn@gmail.com >
2026-08-24 14:17:11 +08:00
Zhengchao An
16ca65ccab
test(e2e): activate S3 Select regressions ( #6442 )
...
* test(e2e): activate S3 Select regressions
* test(e2e): bind S3 Select Linux selection
2026-08-24 14:16:48 +08:00
Zhengchao An
ecefb5644b
fix(e2e): honor custom Cargo target directory ( #6434 )
...
* fix(e2e): honor custom Cargo target directory
* test(e2e): bind target-dir selection digests
---------
Co-authored-by: houseme <housemecn@gmail.com >
2026-08-24 14:16:26 +08:00
Zhengchao An
f473b6dbf8
test(e2e): activate configured Vault coverage ( #6430 )
...
* test(e2e): activate configured Vault roundtrip
* test(e2e): bind Vault selection to Linux listing
---------
Co-authored-by: houseme <housemecn@gmail.com >
2026-08-24 14:14:27 +08:00
Zhengchao An
af6545b689
test(e2e): activate data usage regressions ( #6429 )
...
* test(e2e): activate data usage regressions
* test(e2e): bind data usage selection to Linux listing
* test(e2e): refresh data usage Darwin selection
---------
Co-authored-by: houseme <housemecn@gmail.com >
2026-08-24 14:14:02 +08:00
Zhengchao An
a66b568ba0
test(e2e): require zero KMS concurrency failures ( #6428 )
...
* test(e2e): require zero KMS upload failures
* test(e2e): bind KMS selection to Linux listing
---------
Co-authored-by: houseme <housemecn@gmail.com >
2026-08-24 14:13:36 +08:00
Zhengchao An
232190a205
test(e2e): activate policy variable coverage ( #6427 )
...
* test(e2e): activate policy variable coverage
* test(e2e): update policy suite membership
* test(e2e): bind policy selection to Linux listing
---------
Co-authored-by: houseme <housemecn@gmail.com >
2026-08-24 14:11:36 +08:00
Zhengchao An
f52a389652
fix(ecstore): persist unresolved decommission entries ( #6415 )
...
* fix(ecstore): persist unresolved decommission entries
* fix(ecstore): type decommission completion result
* fix(ecstore): allow intentional decommission listing signatures under strict clippy
The sftp/swift feature-matrix clippy gates run with -D warnings and
flag the unresolved-entry resolver (large Err payload by design, 8
context parameters) and the decommission listing driver (9 args).
Document why and align with the existing decommission_entry precedent.
2026-08-24 14:05:08 +08:00
Zhengchao An
73cd1b5be2
fix(ecstore): fence rebalance and decommission activation ( #6400 )
...
* fix(ecstore): fence rebalance and decommission activation
* fix(ecstore): fence lost activation locks
* fix(ecstore): bind rebalance workers to activation id
* fix(ecstore): close rebalance activation races
* test(ecstore): exercise lost rebalance commit fence
* fix(ecstore): repair rebalance fence test wiring
* test(ecstore): reuse rebalance metadata fixture
* fix(ecstore): satisfy rebalance activation clippy checks
* fix(ecstore): fence stale rebalance workers
* fix(ecstore): commit rebalance activation after persistence
* fix(ecstore): fence rebalance commits and unblock stop
* test(ecstore): exercise real rebalance fences
* fix(rebalance): cancel admin stop before activation wait
* fix(ecstore): fence multipart staging on rebalance lock loss
* fix(ecstore): adopt activations after durable commit
* fix(rebalance): preserve committed activation recovery
* fix(rebalance): make prepared stop terminal-safe
* fix(ecstore): repair rebalance test imports
* fix(ecstore): repair rebalance entry runtime failures
* test(ecstore): fix activation fence synchronization
* test(ecstore): scope rebalance disk trait import
* test(ecstore): observe decommission lock attempt
* fix(ecstore): align activation fence test imports
* fix(ecstore): remove duplicate activation test import
* fix(ecstore): resolve CI clippy failures
* fix: satisfy activation merge lint gates
---------
Co-authored-by: houseme <housemecn@gmail.com >
2026-08-24 14:03:21 +08:00
Zhengchao An
40bf9f0425
fix(ecstore): prefer active pool reads during decommission ( #6475 )
2026-08-24 09:36:35 +08:00
Zhengchao An
eb0384c225
test(app): distinguish usage overlay from quota floor ( #6479 )
...
test(app): preserve delete quota floor assertion
2026-08-24 09:33:27 +08:00
Zhengchao An
0e015360cc
test(scanner): repair post-fence fixtures ( #6478 )
2026-08-24 09:33:21 +08:00
Zhengchao An
2bd1df3075
fix(scanner): preserve default usage cache wire format ( #6477 )
2026-08-24 09:33:16 +08:00
Zhengchao An
9935911e93
fix(ecstore): drop unused decommission bucket runner and refresh e2e linux digest ( #6476 )
...
fix(rustfs): drop sftp-dead scanner capability import and unwired heal_bucket trait method
The sftp feature matrix compiles fewer call sites: the plain
sign_ns_scanner_capability re-export had no remaining user, and
StoragePeerS3ClientExt::heal_bucket was superseded by
heal_bucket_with_fence when #6416 wired the fenced path.
2026-08-24 09:33:10 +08:00
Zhengchao An
99fb77b164
fix(ci): restore main checks ( #6469 )
...
* fix(ci): restore main checks
* fix(scanner): bootstrap pristine usage state
* fix(scanner): reject empty usage snapshots
2026-08-24 09:33:00 +08:00
Zhengchao An
ebff02304d
fix(connect): make registration bootstrap retry durable ( #6468 )
...
* fix(connect): make registration state durability retry-safe
* fix(connect): reject parent state paths
* fix(connect): harden state directory creation
* fix(connect): bound bootstrap directory syncs
* fix(connect): require durable state parent
* fix(connect): close bootstrap marker race
* test(connect): cover marker sync failure
2026-08-24 09:32:54 +08:00
Zhengchao An
57eaa8228d
fix(ecstore): migrate tier free versions during decommission ( #6393 )
2026-08-24 09:21:53 +08:00
Zhengchao An
aa0a374aa4
style: rustfmt decommission import groups on main ( #6474 )
...
cargo fmt --check has been failing since #6410 landed: the merged
decommission import groups in core/pools.rs were not canonical
rustfmt output. Apply formatting verbatim, no code changes.
2026-08-24 03:07:49 +08:00
Zhengchao An
1ec1a8d90d
fix(ecstore): run metadata decommission before buckets ( #6410 )
...
* fix(ecstore): run decommission metadata first
* fix(ecstore): clear clippy warnings
---------
Co-authored-by: houseme <housemecn@gmail.com >
2026-08-24 00:22:46 +08:00
Zhengchao An
28b3ecf547
fix(ci): restore main checks ( #6467 )
2026-08-24 00:15:58 +08:00
Zhengchao An
33341d5fcf
fix(ecstore): unify decommission resume queue ( #6403 )
...
* fix(ecstore): unify decommission resume queue
* fix(ecstore): clear swift clippy warnings
* fix(ecstore): serialize decommission recovery
---------
Co-authored-by: houseme <housemecn@gmail.com >
2026-08-23 23:51:33 +08:00
Zhengchao An
2a43e021c9
fix(ecstore): fence bucket heal during decommission ( #6416 )
...
* fix(ecstore): fence bucket heal during decommission
* fix(ecstore): preserve unfenced heal compatibility
---------
Co-authored-by: houseme <housemecn@gmail.com >
2026-08-23 23:38:16 +08:00
Zhengchao An
8bf4f20890
test(e2e): activate conditional write regressions ( #6454 )
2026-08-23 23:34:50 +08:00