gall: don't ack %leave for non-running agents #6953
Merged
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.
In %gall, %pokes to a non-running agent are dropped, and a
%flub
task is sent to %ames to "forget" about the message that has been sent by decreasing the heard (but not acked) sequence number, and removing the pending-ack from its queue.If the %poke is a
%leave
(s), %gall automatically %acks it (giving a %done to %ames) before sending the %flub, which means that %ames has already remove the pending-ack, and we are going to crash on the %leave, and send a %nack, making the subscriber to retry the %leave forever, every ~m2.The fix:
we just check that the queue is not empty.don't ack %leave for non-running agents