Skip to content

Conversation

@acogoluegnes
Copy link
Collaborator

This makes PerfTest more reactive with large prefetch and long processing times: client TCP buffer gets full, the broker cannot write to the client socket, it closes the connection (after a 30-second timeout by default), the client tries to close the connection channels, but it uses the consumer dispatcher to do so, and it is busy processing the slow messages, so the channels are never properly shut down. Recovery cannot occur then.

By dispatching messages only when the channel is open, the consumer dispatcher backlog gets cleared right away, channels get closed normally and recovery can kick in.

This makes PerfTest more reactive with large prefetch and long
processing times: client TCP buffer gets full, the broker cannot write
to the client socket, it closes the connection (after a 30-second
timeout by default), the client tries to close the connection channels,
but it uses the consumer dispatcher to do so, and it is busy processing
the slow messages, so the channels are never properly shut down.
Recovery cannot occur then.

By dispatching messages only when the channel is open, the consumer
dispatcher backlog gets cleared right away, channels get closed normally
and recovery can kick in.
@acogoluegnes acogoluegnes added this to the 2.24.0 milestone Mar 18, 2025
@acogoluegnes acogoluegnes merged commit bd4b3ee into main Mar 18, 2025
1 check passed
@acogoluegnes acogoluegnes deleted the dispatch-only-when-channel-is-open branch March 18, 2025 17:53
github-actions bot pushed a commit that referenced this pull request Mar 18, 2025
Dispatch messages only when channel is open
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants