[Messenger] fixes for Redis transport #53394
Closed
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.
New minor feature: separate
pending_interval
for pending messages.The PR overhauls Redis receiver. Fetch pending messages step is split into getting claimed messages and pending messages.
Claim step uses XAUTOCLAIM to claim messages instead of using XPENDING and XCLAIM combo. That simplifies code a lot. This step can be rewritten without XAUTOCLAIM to support older Redis versions.
Fetching pending messages is implemented using
WeakMap
, whenWeakMap
is empty, i.e. there are no messages in the worker currently, we just iterate all consumer pending messages using XREADGROUP starting from 0.That approach resolves #49023 and #44400 part that is specifically caused by using batch handlers.
This PR does not fix other important issues:
consumer
name #51604 - causesCould not acknowledge redis message
errors when multiple workers with the same consumer are running