Skip to content
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

Conversation

BewareMyPower
Copy link
Contributor

@BewareMyPower BewareMyPower commented Aug 26, 2021

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

  • 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:

@BewareMyPower 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 BewareMyPower self-assigned this Aug 26, 2021
Copy link
Contributor

@eolivelli eolivelli left a 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 sijie added this to the 2.9.0 milestone Sep 2, 2021
@BewareMyPower
Copy link
Contributor Author

@sijie @codelipenghui @hangc0276 Could you also take a look?

@BewareMyPower BewareMyPower merged commit 1303e7d into apache:master Sep 2, 2021
@BewareMyPower BewareMyPower deleted the bewaremypower/fix-consumer-opencnx branch September 2, 2021 05:09
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)
@codelipenghui codelipenghui added the cherry-picked/branch-2.8 Archived: 2.8 is end of life label Sep 9, 2021
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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants