houseme
894e342b48
Merge branch 'main' into overtrue/fix-1905-activation-fence
2026-08-23 12:36:14 +08:00
唐小鸭
5f72209446
fix(ecstore): keep unknown-size sentinel in create_bitrot_writer ( #6380 )
...
SSE and compression wrap the payload so its length is unknown and
advertise HashReader::SIZE_PRESERVE_LAYER (-1). Every layer preserved
that sentinel except create_bitrot_writer, which clamped it to 0 before
calling DiskAPI::create_file. RemoteDisk forwards that size verbatim in
the put_file_stream query, so remote peers were told the body was empty.
Since the authenticated put-file trailer (#5868 ) the receiver used the
declared size to split body from trailer, turning the clamp into a fatal
"auth trailer has trailing data" failure for every SSE PUT on multi-node
deployments (rc.2). #6320 relaxed the receiver to only trust size > 0;
this change fixes the sender so the sentinel survives end to end and the
wire no longer conflates empty objects with unknown-length streams.
Refs #6331
2026-08-23 12:29:52 +08:00
houseme
84eb5aebef
fix(ecstore): remove inline write debug noise ( #6408 )
...
* fix(ecstore): remove inline write debug noise
Co-Authored-By: heihutu <heihutu@gmail.com >
* fix(ecstore): satisfy warning-as-error lints
Co-Authored-By: heihutu <heihutu@gmail.com >
---------
Co-authored-by: heihutu <heihutu@gmail.com >
2026-08-23 12:07:20 +08:00
overtrue
6f115ea2ec
fix(ecstore): resolve CI clippy failures
2026-08-23 05:45:10 +08:00
cxymds
20d1266496
fix(heal): fence format repair during pool transitions ( #6342 )
...
* fix(heal): fence format repair during pool transitions
* fix(heal): fence format writes during transitions
2026-08-23 04:24:48 +08:00
overtrue
4d0ffa680a
Merge remote-tracking branch 'origin/main' into overtrue/fix-1905-activation-fence
...
# Conflicts:
# crates/ecstore/src/core/pools.rs
2026-08-23 02:36:20 +08:00
Zhengchao An
26e6508b64
fix(ecstore): reject equal-time latest identity conflicts before index fallback ( #6374 )
2026-08-23 01:42:11 +08:00
cxymds
87235ffd28
perf(ecstore): bound decommission entry workers ( #6360 )
2026-08-23 01:40:03 +08:00
houseme
f1b92af4a3
feat(ecstore): coalesce GET ReadVersion RPCs ( #6395 )
2026-08-23 01:15:38 +08:00
overtrue
d5648b52a7
fix(ecstore): remove duplicate activation test import
2026-08-23 01:09:40 +08:00
overtrue
e05fe7c014
Merge origin/main into overtrue/fix-1905-activation-fence
2026-08-23 00:52:29 +08:00
Zhengchao An
7c1a76dfd9
fix(ecstore): fence deletes against decommission commits ( #6363 )
...
* fix(ecstore): fence deletes against decommission commits
* fix(ecstore): preserve decommission target write locks
* fix(ecstore): preserve delete markers during source cleanup
* fix(ecstore): route batch delete markers to active pools
* fix(ecstore): preserve batch delete pool errors
* fix(ecstore): retain source-set lock during cleanup
* test(ecstore): exercise decommission delete fences
* test(ecstore): finish decommission delete fence scenario
* fix(ecstore): reuse fixed fence for reverse decommission
* fix(ecstore): fence decommission commit loss
* fix(ecstore): annotate batch delete fallback
* test(ecstore): fix decommission fence fixtures
* fix(ecstore): unblock decommission delete fences
* fix(ecstore): preserve distributed decommission set locks
* fix(ecstore): match decommission lock backend domain
* test(ecstore): align decommission fence barriers
* fix(ecstore): satisfy delete fence lint checks
* fix(rebalance): preserve access-denied delete errors
2026-08-23 00:40:38 +08:00
overtrue
ac57641e9b
fix(ecstore): align activation fence test imports
2026-08-23 00:22:53 +08:00
overtrue
f5f5212abd
Merge origin/main into overtrue/fix-1905-activation-fence
2026-08-22 23:58:53 +08:00
cxymds
2fccfdeabe
fix(scanner): fence timed out scan cycles ( #6352 )
...
* fix(scanner): fence timed out scan cycles
* fix(scanner): cancel scan workers with cycle scope
* fix(scanner): reject persisted timer overflow
* fix(scanner): reject terminal leadership epochs
* fix(scanner): reject trailing cycle state bytes
2026-08-22 14:38:18 +00:00
Zhengchao An
9815694301
fix(ecstore): supervise decommission worker cleanup ( #6372 )
2026-08-22 14:33:24 +00:00
houseme
0e79106c2f
fix(storageclass): use div_ceil for inline threshold to match shard size calc ( #6390 )
...
The inline_block threshold used floor division (DEFAULT_INLINE_OBJECT_BUDGET
/ data_shards) while shard_file_size uses ceiling division (div_ceil). For
EC 12:4 with 256KiB objects, this caused a 1-byte discrepancy:
- inline_block = 262144 / 12 = 21845 (floor)
- shard_file_size = 262144.div_ceil(12) = 21846 (ceil)
- should_inline(21846, 12, false) = false (wrong!)
Fix by using div_ceil for the inline_block calculation, so both sides
use the same rounding and the inline path is correctly triggered.
Co-authored-by: heihutu <heihutu@gmail.com >
2026-08-22 22:05:20 +08:00
cxymds
da90d02c15
test(ecstore): cover suspended-owner heal semantics ( #6348 )
...
* test(ecstore): cover suspended-owner heal semantics
* test(heal): cover suspended owner production path
2026-08-22 20:45:03 +08:00
唐小鸭
a930152d5a
fix(admin): expose per-target disableProxy through remote target admin API ( #6376 )
...
The read-proxy selector already honors a target's disable_proxy flag
(PR #6172 ), but the admin API still rejected the field, so the only way
to set it was importing a MinIO-written bucket-targets.json.
- move disableProxy from REMOTE_TARGET_UNSUPPORTED_FIELDS to
REMOTE_TARGET_WRITABLE_FIELDS (set-remote-target create accepts it)
- add TargetUpdateOp::Proxy so set-remote-target?update=true&proxy=true
overlays only the proxy group (MinIO TargetUpdateType parity)
- bump REMOTE_TARGET_CAPABILITY_CONTRACT_VERSION 1 -> 2 and update the
runtime capability pin tests
- keep edge/edgeSyncBeforeExpiry rejected (no implementation behind them)
- pin that a published TargetClient carries disable_proxy, the field the
proxy-target selector consults
Refs rustfs/backlog#1950
2026-08-22 20:43:52 +08:00
cxymds
f9d45e41e1
fix(quota): account compressed deletes by committed size ( #6365 )
2026-08-22 11:39:01 +00:00
Zhengchao An
1a3be70d98
fix(ecstore): preserve remote delete error types ( #6371 )
2026-08-22 17:07:02 +08:00
cxymds
a34310a58f
fix(ecstore): fail closed on unresolved decommission entries ( #6367 )
...
* fix(ecstore): fail closed on unresolved decommission entries
* perf(ecstore): avoid successful listing name clone
2026-08-22 14:12:28 +08:00
cxymds
2e60029079
perf(ecstore): throttle decommission checkpoints ( #6356 )
2026-08-22 13:49:23 +08:00
overtrue
07bac4978e
test(ecstore): observe decommission lock attempt
2026-08-22 12:37:47 +08:00
overtrue
d908f00f01
test(ecstore): scope rebalance disk trait import
2026-08-22 12:34:25 +08:00
overtrue
b8e9170cb0
test(ecstore): fix activation fence synchronization
2026-08-22 12:34:25 +08:00
overtrue
4fdc1c3a85
fix(ecstore): repair rebalance entry runtime failures
2026-08-22 12:34:25 +08:00
overtrue
89e910df3a
fix(ecstore): repair rebalance test imports
2026-08-22 12:34:25 +08:00
overtrue
04bafeb662
fix(rebalance): preserve committed activation recovery
2026-08-22 12:34:25 +08:00
overtrue
afbb842dbf
fix(ecstore): adopt activations after durable commit
2026-08-22 12:34:25 +08:00
overtrue
8d97f3570d
fix(ecstore): fence multipart staging on rebalance lock loss
2026-08-22 12:34:25 +08:00
overtrue
4cce1b2e3b
fix(rebalance): cancel admin stop before activation wait
2026-08-22 12:34:25 +08:00
overtrue
8b0e96c314
test(ecstore): exercise real rebalance fences
2026-08-22 12:34:25 +08:00
overtrue
3677482f9f
fix(ecstore): fence rebalance commits and unblock stop
2026-08-22 12:34:24 +08:00
overtrue
ce3cd2d890
fix(ecstore): commit rebalance activation after persistence
2026-08-22 12:34:24 +08:00
overtrue
c20fe73d6f
fix(ecstore): fence stale rebalance workers
2026-08-22 12:34:24 +08:00
overtrue
dc0c64689b
fix(ecstore): satisfy rebalance activation clippy checks
2026-08-22 12:34:24 +08:00
overtrue
1a59f8ef6b
test(ecstore): reuse rebalance metadata fixture
2026-08-22 12:34:24 +08:00
overtrue
a69fb0882d
fix(ecstore): repair rebalance fence test wiring
2026-08-22 12:34:24 +08:00
overtrue
209d3481da
test(ecstore): exercise lost rebalance commit fence
2026-08-22 12:34:24 +08:00
overtrue
d4b297186f
fix(ecstore): close rebalance activation races
2026-08-22 12:34:24 +08:00
overtrue
814e17b02a
fix(ecstore): bind rebalance workers to activation id
2026-08-22 12:34:24 +08:00
overtrue
a72deafc9f
fix(ecstore): fence lost activation locks
2026-08-22 12:34:24 +08:00
overtrue
bb2ac2758f
fix(ecstore): fence rebalance and decommission activation
2026-08-22 12:34:24 +08:00
houseme
2f0918f60b
feat(disk): fsync dedicated blocking pool (default-off) ( #6366 )
2026-08-22 11:24:24 +08:00
Zhengchao An
37c5ce1399
docs(agents): streamline instruction routing ( #6358 )
2026-08-22 08:19:53 +08:00
Zhengchao An
61b5edf16e
chore(ecstore): standardize 24 bare TODO/FIXME to tracked format ( #6346 )
2026-08-22 07:09:32 +08:00
Zhengchao An
bc07cfd115
ci: harden test selection and nightly coverage ( #6341 )
2026-08-21 15:04:08 +00:00
cxymds
adb90fc6e1
fix(scanner): defer usage publication during pool recovery ( #6333 )
...
* fix(scanner): defer usage publication during pool recovery
* fix(scanner): preserve metrics when publication is deferred
* fix(scanner): route test types through storage boundary
* fix(scanner): keep cache floor deferred during movement
2026-08-21 17:32:59 +08:00
cxymds
cdfac5d7e3
fix(ecstore): avoid decommission walk deadline on backpressure ( #6332 )
...
fix(ecstore): bound decommission background walks
2026-08-21 17:32:12 +08:00