Repository navigation
[Store][Bugfix] Fix DFS sync client test retry failure - #4781
stmatengss merged 1 commit into
Conversation
Signed-off-by: Lancer <maruixiang6688@gmail.com>
2f2ccdd to
e223960
Compare
he-yufeng
left a comment
There was a problem hiding this comment.
Verified this in a Linux container (ubuntu 22.04, mooncake-store tests): DfsOnlyBatchFailureOnlyRevokesFailedKey passes with the change, and the full dfs_sync_client_test suite goes 16 passed / 2 environment-skipped (the two checksum tests skip for lack of a DFS endpoint here, same as before).
The disarm placement and ClearWriteFailure helper are correct: fail_write_call_ = -1 defeats the fail > 0 guard, and clearing right after the failing batch leaves the retry leg modeling a cleared transient fault, which is the scenario under test.
One nit: the deleted comment block above the fail > 0 guard was load-bearing documentation — it explains why the injector is persistent at all (a one-shot failure would be masked by the backend's reopen-retry, so only a persistent fault surfaces to the caller). With it gone, the next person touching this adapter has to rediscover that. Keeping it (or moving it next to ClearWriteFailure) would make the fix complete.
For disclosure: I independently opened #4785 with the same fix last night before noticing this one (identical mechanism, existing FailWriteCall(-1) instead of a new helper). Closing mine in favor of this earlier one.
fcczzz
left a comment
There was a problem hiding this comment.
LGTM, the fix correctly clears the injected fault before the independent retry.
One non-blocking suggestion: please retain the existing comment in WriteAt explaining why failures must persist across the backend’s reopen retry. That context is still relevant and helps prevent accidentally changing the injector back to a single-call failure.
…20261021 * upstream/main: (507 commits) [Reshard] Plan Store KV reuse across TP, PP and host layouts (kvcache-ai#4762) [Store] Walk tenants through shard-backed cursors and build the removes on them (kvcache-ai#4796) [Store-RS][Bugfix] Match TENT Request Layout to the C ABI (kvcache-ai#4732) [TransferEngine] Recover auto GID after data-path retry exhaustion (kvcache-ai#4290) [Store] Add the namespace layer over the object route (kvcache-ai#4721) [Store] Fix silent loss of offload keys deferred to the ungrouped pool (kvcache-ai#3006) (kvcache-ai#3009) [Store] Remove redundant alignment headroom from DFS shard allocation (kvcache-ai#4753) [CI/Build] Gate ROCm hardware tests and bound nightly Docker builds (kvcache-ai#4750) [Bugfix][Store] Fix double-counting of segment OpLog metrics in OpLogApplier (kvcache-ai#4771) [Store] Skip hot-cache writeback for device-resident read destinations (kvcache-ai#4764) [Reshard] Add bounded in-flight execution for weight transfers (kvcache-ai#4628) [Store] Avoid racing with detached hot-cache fills during key scans (kvcache-ai#4334) [Store] HA: drain the master on SIGTERM/SIGINT before exit (part 1 of kvcache-ai#4710) (kvcache-ai#4745) TENT: report a notification the receiver could not take (kvcache-ai#4754) [Store] Reach object metadata through a per-key accessor contract (kvcache-ai#4717) [Store][Bugfix] Fix DFS sync client test retry failure (kvcache-ai#4781) [Wheel] Keep integer dtype for typed_ragged rows when a row is an empty list (kvcache-ai#4611) [Doc] Sync README news onto the docs homepage (kvcache-ai#4767) [CI] remove stale Torch version binding after PG JIT (kvcache-ai#4760) [TransferEngine] Add buffer-protocol and page-gathered batch transfer APIs (kvcache-ai#4763) ...
…-ranges-20261021 * upstream/main: (394 commits) [Reshard] Plan Store KV reuse across TP, PP and host layouts (kvcache-ai#4762) [Store] Walk tenants through shard-backed cursors and build the removes on them (kvcache-ai#4796) [Store-RS][Bugfix] Match TENT Request Layout to the C ABI (kvcache-ai#4732) [TransferEngine] Recover auto GID after data-path retry exhaustion (kvcache-ai#4290) [Store] Add the namespace layer over the object route (kvcache-ai#4721) [Store] Fix silent loss of offload keys deferred to the ungrouped pool (kvcache-ai#3006) (kvcache-ai#3009) [Store] Remove redundant alignment headroom from DFS shard allocation (kvcache-ai#4753) [CI/Build] Gate ROCm hardware tests and bound nightly Docker builds (kvcache-ai#4750) [Bugfix][Store] Fix double-counting of segment OpLog metrics in OpLogApplier (kvcache-ai#4771) [Store] Skip hot-cache writeback for device-resident read destinations (kvcache-ai#4764) [Reshard] Add bounded in-flight execution for weight transfers (kvcache-ai#4628) [Store] Avoid racing with detached hot-cache fills during key scans (kvcache-ai#4334) [Store] HA: drain the master on SIGTERM/SIGINT before exit (part 1 of kvcache-ai#4710) (kvcache-ai#4745) TENT: report a notification the receiver could not take (kvcache-ai#4754) [Store] Reach object metadata through a per-key accessor contract (kvcache-ai#4717) [Store][Bugfix] Fix DFS sync client test retry failure (kvcache-ai#4781) [Wheel] Keep integer dtype for typed_ragged rows when a row is an empty list (kvcache-ai#4611) [Doc] Sync README news onto the docs homepage (kvcache-ai#4767) [CI] remove stale Torch version binding after PG JIT (kvcache-ai#4760) [TransferEngine] Add buffer-protocol and page-gathered batch transfer APIs (kvcache-ai#4763) ...
Description
Fixes the existing
DfsOnlyBatchFailureOnlyRevokesFailedKeytest, which failed because its injected DFS write failure persisted beyond the intended operation.Root cause
The test adapter failed every write from the configured call onward. The DFS backend retries a failed POSIX write once after reopening the file descriptor, so the injected failure affected both the original write and its internal retry. It also caused the test’s later, independent
Putretry to fail, contrary to the scenario the test intends to verify.Changes
ClearWriteFailure()and call it immediately afterBatchPutreturns, before checking that a laterPutcan reuse the key.Testing
DfsOnlyBatchFailureOnlyRevokesFailedKeypasses.BatchDfsFailureOnlyRevokesFailedKeypasses.DfsMetricsCountWriteFailureSeparatelyFromOpspasses.Suggested Merge Priority
Module
mooncake-transfer-engine)mooncake-store)mooncake-conductor)mooncake-reshard)mooncake-ep)mooncake-pg)mooncake-integration)mooncake-p2p-store)mooncake-wheel)mooncake-common)mooncake-rl)Type of Change
How Has This Been Tested?
Test commands:
# Example: bash scripts/run_ci_test.shTest results:
Checklist
./scripts/code_format.shAI Assistance Disclosure