CQ: Skip and ignore pending ACKs which no longer exist in RAM and/or DISK when dead-lettering rejected messages #13926
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.
Proposed Changes
Hello Team 👋
We're seeing the following CQ crash very frequently. NOTE: the crash log below is from a CMQ (on 3.12.x), but the patch we're suggesting is on the
rabbit_variable_queue
BQ (which we'd still like to have in 4.x. to avoid same problems). When dead-lettering CQ rejected messages, onBQ:ackfold/4
- there are cases where expected pending ACKs no longer exist in BQ state, i.e.ram_pending_ack
and/ordisk_pending_ack
causing the entire queue to crash. In such cases we want to skip and ignore processing the rejected ACK sequence-id, seeing it no longer exists in the BQ state, no need to crash the entire queue, and proceed to processing the next ACK(s):Please take a look if OK (crashes are recurring). Thanks
Types of Changes
What types of changes does your code introduce to this project?
Put an
x
in the boxes that applyChecklist
Put an
x
in the boxes that apply.You can also fill these out after creating the PR.
If you're unsure about any of them, don't hesitate to ask on the mailing list.
We're here to help!
This is simply a reminder of what we are going to look for before merging your code.
CONTRIBUTING.md
documentFurther Comments
If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution
you did and what alternatives you considered, etc.