[Fix] Gate RocketMQ 5 POP broker ACK on distribution completion (#5295) - #5316
Open
zhang-arvin wants to merge 1 commit into
Open
[Fix] Gate RocketMQ 5 POP broker ACK on distribution completion (#5295)#5316zhang-arvin wants to merge 1 commit into
zhang-arvin wants to merge 1 commit into
Conversation
…letion Previously, a single mqAck callback was shared across all deliveries of a frame. In BROADCAST/MULTICAST mode, the first client ACK would immediately ACK the broker, even if other required targets had not yet received or acknowledged the message. Introduce a broker-ACK barrier using an AtomicInteger counter: - All deliveries of the same frame share a single counter - Broker ACK fires only when all deliveries have ACKed - LOAD_BALANCE (1 target): 1 ACK -> broker ACK - BROADCAST (N targets): N ACKs -> broker ACK - MULTICAST (matched targets): all matched ACKs -> broker ACK Fixes apache#5295
Contributor
There was a problem hiding this comment.
Welcome to the Apache EventMesh community!!
This is your first PR in our project. We're very excited to have you onboard contributing. Your contributions are greatly appreciated!
Please make sure that the changes are covered by tests.
We will be here shortly.
Let us know if you need any help!
Want to get closer to the community?
| WeChat Assistant | WeChat Public Account | Slack |
|---|---|---|
![]() |
![]() |
Join Slack Chat |
Mailing Lists:
| Name | Description | Subscribe | Unsubscribe | Archive |
|---|---|---|---|---|
| Users | User support and questions mailing list | Subscribe | Unsubscribe | Mail Archives |
| Development | Development related discussions | Subscribe | Unsubscribe | Mail Archives |
| Commits | All commits to repositories | Subscribe | Unsubscribe | Mail Archives |
| Issues | Issues or PRs comments and reviews | Subscribe | Unsubscribe | Mail Archives |
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.


What changes were proposed in this pull request
Fix #5295: Gate RocketMQ 5 POP broker ACK on distribution completion.
Problem
Previously, a single
mqAckcallback was shared across all deliveries of a frame. In BROADCAST/MULTICAST mode, the first client ACK would immediately ACK the broker, even if other required targets had not yet received or acknowledged the message.Solution
Introduce a broker-ACK barrier using an
AtomicIntegercounter:targets.size()Changes
eventmesh-runtime/.../UniIngressService.java: Replace the sharedmqAckcallback with a barrier that counts down remaining ACKs before firing the broker ACKVerification