Add highest sequenceId for CommandSendReceipt. #5653
Merged
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
Since #5491 merged, while user use new pulsar client to produce batch messages to older version broker(e.g. 2.4.0), send ack error will occur:
The problem is client use highest sequence id to match the response sequence id, but in old version broker can not return the highest id.
So, this pr is try to fix the problem of produce batch message with new version client and old version broker.
Modifications
Add highest sequence id to CommandSendReceipt. If the response highest sequence id of send receipt > lowest sequence id, it means broker is a new version broker, so we need to verify the highest sequence id, otherwise we only verify the lowest sequence id.
Verifying this change
I have test on my mac book by using pulsar-perf,
new version client sends messages to old version broker(2.4.0) passed.
old version client sends messages to new version broker passed.
Backward compatibility test is added.
Does this pull request potentially affect one of the following parts:
If
yeswas chosen, please highlight the changesDocumentation