Commit Graph

1528 Commits

Author SHA1 Message Date
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