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

Fixed reader reading from a partition #3960

Merged
merged 1 commit into from
Apr 2, 2019
Merged

Conversation

merlimat
Copy link
Contributor

@merlimat merlimat commented Apr 1, 2019

Motivation

When reader is reading from a partition in a partitioned topic, is currently getting stuck. The reason is that the initial batch of permits is never sent to broker.

@merlimat merlimat added type/bug The PR fixed a bug or issue reported a bug area/client labels Apr 1, 2019
@merlimat merlimat added this to the 2.3.1 milestone Apr 1, 2019
@merlimat merlimat self-assigned this Apr 1, 2019
@merlimat
Copy link
Contributor Author

merlimat commented Apr 1, 2019

run java8 tests
run integration tests

1 similar comment
@merlimat
Copy link
Contributor Author

merlimat commented Apr 2, 2019

run java8 tests
run integration tests

@merlimat merlimat merged commit 7b68376 into apache:master Apr 2, 2019
merlimat added a commit that referenced this pull request Apr 2, 2019
BewareMyPower added a commit that referenced this pull request Sep 2, 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:
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 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

2 participants