[Fix][Broker] Filter Invalid Messages During Individual Acknowledgment #25049
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.
Motivation
When a client sends an individual acknowledgment for a message that does not exist in the pending acknowledgment list (e.g., due to deletion or expiration), the method
getAckOwnerConsumerAndBatchSizeincorrectly returns a non-null value. This causes downstream logic to process the acknowledgment as if the message were valid, leading to unnecessary operations and potential inconsistencies.This PR ensures that invalid message acknowledgments are filtered out early, preventing unnecessary processing and improving system robustness.
Modifications
1.Updated
getAckOwnerConsumerAndBatchSize: Now returnsnullwhen the specified ledger/entry ID is not found in the pending acknowledgment list.2.Enhanced acknowledgment handling: Added null-checks in
individualAckNormalandindividualAckWithTransactionto skip invalid message IDs and log warnings.3.Added validation for empty acknowledgment lists: If no valid messages remain after filtering, the acknowledgment process completes early with a logged warning.
4.Refined documentation: Updated the JavaDoc for
removePendingAcksto accurately reflect the current logic introduced in a previous optimization #23072Verifying this change
Does this pull request potentially affect one of the following parts:
If the box was checked, please highlight the changes
Documentation
docdoc-requireddoc-not-neededdoc-completeMatching PR in forked repository
PR in forked repository: 3pacccccc#33