Transfer staging leases and generation-scoped pool plan cleanup - #761
Draft
yinlin09 wants to merge 2 commits into
Draft
Transfer staging leases and generation-scoped pool plan cleanup#761yinlin09 wants to merge 2 commits into
yinlin09 wants to merge 2 commits into
Conversation
yinlin09
force-pushed
the
yinlin/transfer-op-leases
branch
from
August 24, 2026 00:29
38aa81e to
c567f93
Compare
yinlin09
force-pushed
the
yinlin/reshard-demand-staging
branch
from
August 24, 2026 07:11
8ee40e7 to
a8bd8ce
Compare
yinlin09
force-pushed
the
yinlin/transfer-op-leases
branch
from
August 24, 2026 07:11
c567f93 to
18ab65d
Compare
yinlin09
force-pushed
the
yinlin/reshard-demand-staging
branch
from
August 24, 2026 07:19
a8bd8ce to
d7e8f8a
Compare
yinlin09
force-pushed
the
yinlin/transfer-op-leases
branch
from
August 24, 2026 07:19
18ab65d to
f8bfbff
Compare
yinlin09
force-pushed
the
yinlin/reshard-demand-staging
branch
from
August 24, 2026 07:36
d7e8f8a to
2ba6523
Compare
yinlin09
force-pushed
the
yinlin/transfer-op-leases
branch
from
August 24, 2026 07:36
f8bfbff to
5ab3daa
Compare
yinlin09
force-pushed
the
yinlin/reshard-demand-staging
branch
from
August 24, 2026 07:42
2ba6523 to
6c0640a
Compare
yinlin09
force-pushed
the
yinlin/transfer-op-leases
branch
from
August 24, 2026 07:42
5ab3daa to
1c3189d
Compare
yinlin09
force-pushed
the
yinlin/reshard-demand-staging
branch
from
August 24, 2026 07:51
6c0640a to
90c8ba3
Compare
yinlin09
force-pushed
the
yinlin/transfer-op-leases
branch
from
August 24, 2026 07:51
1c3189d to
23fcc2f
Compare
yinlin09
force-pushed
the
yinlin/reshard-demand-staging
branch
from
August 24, 2026 14:19
90c8ba3 to
b7b8631
Compare
yinlin09
force-pushed
the
yinlin/transfer-op-leases
branch
from
August 24, 2026 14:19
23fcc2f to
5fa008f
Compare
yinlin09
force-pushed
the
yinlin/reshard-demand-staging
branch
from
August 24, 2026 15:04
b7b8631 to
4db95ac
Compare
yinlin09
force-pushed
the
yinlin/transfer-op-leases
branch
from
August 24, 2026 15:04
5fa008f to
173fd13
Compare
A transfer that settles (timeout, a failed copy or push, or completion) now publishes its outcome only when every accepted copy, push, and incoming payload against its staging has finished, so neither its host blocks nor the device pages they mirror are handed to another transfer while late work can still touch them. A failed transfer retires its uuid before its blocks return, so a late payload resolves nothing. Destruction admits no new handlers, counts handlers and workers, unblocks accepted sockets, cancels queued pushes exactly once, stops the data transport, and waits for the last callback before tearing state down.
Pool reshard registration now arms the send or receive state first and publishes the plan last under the plan lifecycle lock, carrying a generation like block plans. Sender and receiver settlement, timeout cleanup, and each copy-to-push hand-off act only on their own registration, a failed pool receive drains like any other receive, and a failed pool send retires its uuid, so stale cleanup can no longer drop a reused plan or its transfer progress.
yinlin09
force-pushed
the
yinlin/reshard-demand-staging
branch
from
August 25, 2026 04:39
4db95ac to
beeca03
Compare
yinlin09
force-pushed
the
yinlin/transfer-op-leases
branch
from
August 25, 2026 04:39
173fd13 to
0b2e9d6
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to the demand-staging stack. A transfer that settles — timeout, a failed copy or push, or completion — now publishes its outcome immediately but returns its staging blocks only after every accepted copy, push, and incoming payload has drained, so late work can never touch blocks already handed to another transfer. Pool reshard plans get the same lifecycle discipline as block plans.
Both libraries build cleanly; the unit suites (including a new generation-scoped pool cleanup test) run in CI. Injection coverage that pauses a live copy or socket mid-transfer needs a live-transfer harness and is left as follow-up.