fix(internode): release rejected incoming packages - #714
Merged
Merged
Conversation
skhaz
approved these changes
Sep 9, 2026
wolfy-j
force-pushed
the
fix/internode-rejected-delivery-release
branch
from
September 10, 2026 01:55
a5b0537 to
fbdb428
Compare
wolfy-j
force-pushed
the
fix/internode-rejected-delivery-release
branch
from
September 10, 2026 02:07
fbdb428 to
70c7737
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.
A decoded internode package remained owned by the service when local delivery rejected it, but the error path did not release it. Packages carrying bounded-retention leases could therefore leak their payload reservations. Successful delivery already transfers ownership to the receiver and remains unchanged.\n\nThe service now releases a decoded package exactly when the delivery callback returns an error, and the existing callback type documents that transactional ownership rule.\n\nRegression coverage uses an observable retention lease to prove both sides:\n- rejection releases the package and lease exactly once;\n- acceptance does not release early and transfers ownership to the receiver.\n\nValidation:\n- focused ownership regression passes 100 times under race;\n- full cluster/internode race suite passes;\n- pinned golangci-lint v2.13.2 reports 0 issues.\n\nThe rebased PR contains only the internode ownership fix and its regression test. Unrelated publish and terminal test adjustments were removed. It adds no new exported API or signature, runtime/Lua/native binding, config or protocol field, wire change, lifecycle state, documentation, worker, or timer.