Shovel bugfix: handle cluster alarms in AMQP10 and local shovels#14873
Merged
michaelklishin merged 3 commits intomainfrom Nov 3, 2025
Merged
Shovel bugfix: handle cluster alarms in AMQP10 and local shovels#14873michaelklishin merged 3 commits intomainfrom
michaelklishin merged 3 commits intomainfrom
Conversation
When an alarm is set in the destination cluster, the AMQP10 shovel receives a remote_incoming_window_exceeded error. It must handle it and retry the send later on, until the alarm is cleared
michaelklishin
requested changes
Nov 1, 2025
Collaborator
michaelklishin
left a comment
There was a problem hiding this comment.
The test failures are reproducible.
gomoripeti
reviewed
Nov 1, 2025
Local shovels must stop publishing when alarms are set in the destination cluster. Messages are stored in memory and sent when the alarm clears, the same way it is done for AMQP091
9bf2fab to
f038115
Compare
Collaborator
michaelklishin
left a comment
There was a problem hiding this comment.
For the record, since we depend on queue:len/1: modern Erlang/OTP's queue module still optimizes for memory footprint and queue:len/1 is an O(n) operation. It is documented right at the top of the module.
That's why RabbitMQ has had an alternative lqueue module since Sep 2011: it keeps the length around and makes queue:len/1 a constant time operation.
I will try switching these changes to use lqueue.
michaelklishin
approved these changes
Nov 3, 2025
Collaborator
michaelklishin
left a comment
There was a problem hiding this comment.
Let's worry about module swapping in a separate PR.
michaelklishin
added a commit
that referenced
this pull request
Nov 3, 2025
Shovel bugfix: handle cluster alarms in AMQP10 and local shovels (backport #14873)
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.
AMQP10 needs to handle the
remote_income_window_exceedederror when an alarm is triggered.Local shovels need to stop publishing and store the pending deliveries when an alarm is triggered. When all alarms are cleared, it must publish the pending deliveries.