Conversation
b457865 to
de2ea02
Compare
…nects
When a consumer in {connected, deactivating} state had its node
disconnect, it would transition to {disconnected, deactivating}.
This state blocked rebalancing because is_active/1 returned true,
leaving the group with no active consumer indefinitely.
Changes:
- handle_group_after_connection_node_disconnected now transitions
{connected, deactivating} to {disconnected, waiting} and triggers
rebalancing, since the deactivation handshake cannot complete
- handle_group_connection_presumed_down applies the same fix as
defense in depth for {disconnected, deactivating} consumers
- handle_connection_node_disconnected updated to accumulate effects
from group processing
- bump stream coordinator machine version to 6 and handle backward
compatibility
Added test cases covering:
- Node disconnect during deactivation (simple and super streams)
- Connection down during deactivation
- Multiple consumers from same connection with one deactivating
- Reconnection after disconnect during deactivation
- Presume down with deactivating consumer (simple and super streams)
References rabbitmq/rabbitmq-stream-dotnet-client#447
de2ea02 to
cd87226
Compare
kjnilsson
approved these changes
Jan 28, 2026
Contributor
|
NB this cannot be backported to 4.1.x as the next series 4.2 is already released. |
acogoluegnes
added a commit
that referenced
this pull request
Jan 28, 2026
Fix stream SAC coordinator deadlock when deactivating consumer disconnects (backport #15353)
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.
When a consumer in {connected, deactivating} state had its node
disconnect, it would transition to {disconnected, deactivating}.
This state blocked rebalancing because is_active/1 returned true,
leaving the group with no active consumer indefinitely.
Changes:
{connected, deactivating} to {disconnected, waiting} and triggers
rebalancing, since the deactivation handshake cannot complete
defense in depth for {disconnected, deactivating} consumers
from group processing
compatibility
Added test cases covering:
References rabbitmq/rabbitmq-stream-dotnet-client#447