-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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
[Client] Reduce redundant FLOW requests for non-durable multi-topics consumer #11802
Merged
BewareMyPower
merged 1 commit into
apache:master
from
BewareMyPower:bewaremypower/fix-consumer-opencnx
Sep 2, 2021
Merged
[Client] Reduce redundant FLOW requests for non-durable multi-topics consumer #11802
BewareMyPower
merged 1 commit into
apache:master
from
BewareMyPower:bewaremypower/fix-consumer-opencnx
Sep 2, 2021
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
BewareMyPower
added
type/bug
The PR fixed a bug or issue reported a bug
area/client
doc-not-needed
Your PR changes do not impact docs
labels
Aug 26, 2021
BewareMyPower
requested review from
eolivelli,
sijie,
codelipenghui,
315157973,
aahmed-se and
hangc0276
and removed request for
eolivelli and
sijie
August 26, 2021 16:59
lhotari
approved these changes
Sep 1, 2021
eolivelli
approved these changes
Sep 1, 2021
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.
+1
But I don't know very well this part.
More eyes are needed please
@sijie @codelipenghui @hangc0276 Could you also take a look? |
sijie
approved these changes
Sep 2, 2021
codelipenghui
pushed a commit
that referenced
this pull request
Sep 9, 2021
…11802) ### Motivation #3960 fixed the bug that reader will get stuck if it's reading a partition of a partitioned topic. The fix is using `isDurable` to check whether the consumer is a reader's internal consumer because it used `partitionIndex` to check whether the target topic is a partition while reader's `partitionIndex` is already set. However, for a non-durable multi-topics consumer, `isDurable` is false and each internal consumer will send FLOW request once the connection is established, which is unnecessary because `MultiTopicsConsumerImpl#startReceivingMessages` will send FLOW requests for each internal consumer after all internal consumers are connected. After #4591 introduced `hasParentConsumer` field, the check works for even a reader without the `isDurable` check. ### Modifications - Remove the check for `isDurable` before sending FLOW request and update the related comment. - Add a test for non-durable multi-topics consumer to verify the number of FLOW requests is the topics number, not the twice the topics number. ### Verifying this change - [x] Make sure that the change passes the CI checks. This change added `NonDurableSubscriptionTest#testFlowCountForMultiTopics` and the existing test `ReaderTest#testReadFromPartition` added in #3960 can also pass after this change. This change added tests and can be verified as follows: (cherry picked from commit 1303e7d)
bharanic-dev
pushed a commit
to bharanic-dev/pulsar
that referenced
this pull request
Mar 18, 2022
…pache#11802) ### Motivation apache#3960 fixed the bug that reader will get stuck if it's reading a partition of a partitioned topic. The fix is using `isDurable` to check whether the consumer is a reader's internal consumer because it used `partitionIndex` to check whether the target topic is a partition while reader's `partitionIndex` is already set. However, for a non-durable multi-topics consumer, `isDurable` is false and each internal consumer will send FLOW request once the connection is established, which is unnecessary because `MultiTopicsConsumerImpl#startReceivingMessages` will send FLOW requests for each internal consumer after all internal consumers are connected. After apache#4591 introduced `hasParentConsumer` field, the check works for even a reader without the `isDurable` check. ### Modifications - Remove the check for `isDurable` before sending FLOW request and update the related comment. - Add a test for non-durable multi-topics consumer to verify the number of FLOW requests is the topics number, not the twice the topics number. ### Verifying this change - [x] Make sure that the change passes the CI checks. This change added `NonDurableSubscriptionTest#testFlowCountForMultiTopics` and the existing test `ReaderTest#testReadFromPartition` added in apache#3960 can also pass after this change. This change added tests and can be verified as follows:
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
area/client
cherry-picked/branch-2.8
Archived: 2.8 is end of life
doc-not-needed
Your PR changes do not impact docs
release/2.8.2
type/bug
The PR fixed a bug or issue reported a bug
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
#3960 fixed the bug that reader will get stuck if it's reading a partition of a partitioned topic. The fix is using
isDurable
to check whether the consumer is a reader's internal consumer because it usedpartitionIndex
to check whether the target topic is a partition while reader'spartitionIndex
is already set. However, for a non-durable multi-topics consumer,isDurable
is false and each internal consumer will send FLOW request once the connection is established, which is unnecessary becauseMultiTopicsConsumerImpl#startReceivingMessages
will send FLOW requests for each internal consumer after all internal consumers are connected.After #4591 introduced
hasParentConsumer
field, the check works for even a reader without theisDurable
check.Modifications
isDurable
before sending FLOW request and update the related comment.Verifying this change
This change added
NonDurableSubscriptionTest#testFlowCountForMultiTopics
and the existing testReaderTest#testReadFromPartition
added in #3960 can also pass after this change.This change added tests and can be verified as follows: