-
Notifications
You must be signed in to change notification settings - Fork 3.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[improve] [broker] Avoid subscription fenced error with consumer.seek whenever possible #23163
Merged
Conversation
This file contains 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
…y consumer.seek whenever possible
poorbarcode
added
category/reliability
The function does not work properly in certain specific environments or failures. e.g. data lost
release/3.2.5
release/3.0.7
release/3.3.2
labels
Aug 13, 2024
lhotari
changed the title
[improve] [broker] Avoid subsscription fenced error that introduced by consumer.seek whenever possible
[improve] [broker] Avoid subscription fenced error with consumer.seek whenever possible
Aug 13, 2024
lhotari
reviewed
Aug 13, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good work! I added some review comments.
...broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java
Outdated
Show resolved
Hide resolved
...broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java
Outdated
Show resolved
Hide resolved
lhotari
reviewed
Aug 13, 2024
...broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java
Outdated
Show resolved
Hide resolved
lhotari
approved these changes
Aug 13, 2024
codelipenghui
approved these changes
Aug 13, 2024
Technoboy-
approved these changes
Aug 14, 2024
nikhil-ctds
pushed a commit
to datastax/pulsar
that referenced
this pull request
Aug 16, 2024
… whenever possible (apache#23163) (cherry picked from commit d5ce1ce) (cherry picked from commit bbe67c8)
nikhil-ctds
pushed a commit
to datastax/pulsar
that referenced
this pull request
Aug 16, 2024
… whenever possible (apache#23163) (cherry picked from commit d5ce1ce) (cherry picked from commit bbe67c8)
srinath-ctds
pushed a commit
to datastax/pulsar
that referenced
this pull request
Aug 20, 2024
… whenever possible (apache#23163) (cherry picked from commit d5ce1ce) (cherry picked from commit bbe67c8)
grssam
pushed a commit
to grssam/pulsar
that referenced
this pull request
Sep 4, 2024
… whenever possible (apache#23163)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
category/reliability
The function does not work properly in certain specific environments or failures. e.g. data lost
cherry-picked/branch-3.0
cherry-picked/branch-3.2
cherry-picked/branch-3.3
doc-not-needed
Your PR changes do not impact docs
ready-to-test
release/3.0.7
release/3.2.5
release/3.3.2
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
After a consumer calls
seek
, the operationreconnect
will get a fenced error, which leads to more unnecessary reconnects. The steps to produce are as follows:client-side
: consumer connectedclient-side
: callsconsumer.seek
orseekAsync
broker-side
:fenced
client-side
:reset cursor
not finished yet.broker-side
:reset cursor
is completedclient-side
: The consumer tries to reconnect, and it will finish at this time.Modifications
consumer.seek
fenced other consumers under the same subscription.consumer.seek
fenced other consumers under the same subscription. See the following example:broker-side: consumer_1
broker-side: consumer_2
false
consumer_2
reset cursor
startedfenced
I do not want to improve the behavior above because it needs a lock. Since it does not cause critical errors, it just causes reconnection and the possibility of it occurring is low, we can leave it there.
Documentation
doc
doc-required
doc-not-needed
doc-complete
Matching PR in forked repository
PR in forked repository: x