-
Notifications
You must be signed in to change notification settings - Fork 4k
Ra v2.16.0 #12713
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Ra v2.16.0 #12713
Conversation
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
c820291 to
115eb3a
Compare
83bb7f0 to
a2de01e
Compare
d5e6df0 to
eed6294
Compare
3c6be7e to
562756c
Compare
e7dfe9b to
2f51df7
Compare
ansd
reviewed
Jan 27, 2025
This version of Ra contains a substantially refactored Ra log implementation that provides higher throughput and lower memory use in serveral scenarios. New features: * `log_ext` new effect type that instead of immedately reading entries from the log it will instead provide a read plan for any entries only located in segments. * Machine version upgrades can now be be delayed until all members are confirmed to support the new version. This will avoid potential consumption pauses during upgrades.
This offloads the work of reading messages from on-disk segments to the interacting process rather than doing this blocking, performance affecting work in the ra server process. QQ: ensure opened segments are closed after some time of inactivity Processes that havea received messages that had to be read from disks may keep a segment open indefinitely. This introduces a timer which after some time of inactivity will close all opened segments to ensure file descriptors are not kept open indefinitely.
from rabbit_fifo version 0. The same was also implemented for the stream coordinator. QQ: avoid dead lock in queue federation. When processing the queue federation startup even the process may call back into the ra process causing a deadlock. in this case we spawn a temporary process to avoid this.
And be less confusing around the arguments that add_member/4 actually takes.
the-mikedavis
approved these changes
Jan 28, 2025
Collaborator
|
FTR, the reason why |
gomoripeti
added a commit
to cloudamqp/rabbitmq-server
that referenced
this pull request
Oct 1, 2025
There is a race condition that when a QQ shuts down while a channel tries to deliver a message to it, the `gen_statem:call` exits. This exit is caught in `rabbit_queue_type:deliver/4`, but not handled and resulted in a case_clause in`rabbit_channel:delivery_to_queues/3`. This not only resulted in the channel process crashing but also interrupted the delivery, in a fan-out scenario the message was not delivered to queues in the destination list after the shut down queue. With this fix the message is now published to all other destination queues and a rejected publisher confirm response is sent. The fix was adapted from PR rabbitmq#12713 commit f2b1f37 (which relies on a change in `ra` 2.16.0) included in RabbitMQ 4.1.0. Partially fixes rabbitmq#10344
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.
This version of Ra contains a substantially refactored Ra log implementation that provides higher throughput and lower memory use in several scenarios.
Changes:
QQ: Use new
log_exteffectThis offloads the work of reading messages from on-disk segments
to the interacting process (typically a session or channel process)
rather than doing this blocking, performance affecting work in the
Ra server process.
Ensure opened segments are closed after some time of inactivity
Processes that have received messages that had to be read from disks
may keep a segment open indefinitely. This introduces a timer which
after some time of inactivity will close all opened segments to ensure
file descriptors are not kept open indefinitely.
Use
initial_machine_versionconfig to avoid initialising from rabbit_fifo version 0.Use
initial_machine_versionconfig to avoid initialising from rabbit_stream_coordinator version 0.Avoid dead lock in queue federation.
When processing the queue federation startup even the process
may call back into the Ra process causing a deadlock. in this
case we spawn a temporary process to avoid this.