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

Replicator stop retrying to read when cursor is already closed #239

Merged
merged 1 commit into from
Feb 24, 2017

Conversation

rdhabalia
Copy link
Contributor

Motivation

Replicator's ManagedCursor gets closed when replicator is deleted from the policies. However, as Removing Replicator for a topic is not performed atomically and because of that sometimes, replicator-producer tries to read from Cursor which already Closed. In that case, replicator should not retry to read the message again (because replicator is already removed and cursor is closed for that replicator) and consider CursorAlreadyClosedException as non-retriable exception, close the producer and stop the replicator.

Modifications

Replicator considers CursorAlreadyClosedException as non-retriable exception so, it stops retrying further read and closes the producer.

Result

PersistentReplicator will not retry read on CursorAlreadyClosedException.

@rdhabalia rdhabalia added the type/bug The PR fixed a bug or issue reported a bug label Feb 23, 2017
@rdhabalia rdhabalia added this to the 1.17 milestone Feb 23, 2017
@rdhabalia rdhabalia self-assigned this Feb 23, 2017
@saandrews
Copy link
Contributor

👍

@rdhabalia
Copy link
Contributor Author

@merlimat we are thinking to patch this PR and #232 into 1.16 branch, and then want to release it.
Can you also please review it.

Copy link
Contributor

@merlimat merlimat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@rdhabalia rdhabalia merged commit 96f824b into apache:master Feb 24, 2017
@rdhabalia rdhabalia deleted the close_cursor branch June 21, 2017 18:55
sijie added a commit to sijie/pulsar that referenced this pull request Mar 4, 2018
sijie pushed a commit to sijie/pulsar that referenced this pull request Mar 4, 2018
…est endpoint) to WorkerService (apache#239)" (apache#241)

This reverts commit 8fd1fd1870753ea8fb2576873800380ac2cea3dd.
sijie added a commit to sijie/pulsar that referenced this pull request Mar 4, 2018
…point) to WorkerService (apache#242)

* Move all the components required for running worker (except rest endpoint) to WorkerService (apache#239)

* start worker service
hrsakai pushed a commit to hrsakai/pulsar that referenced this pull request Dec 10, 2020
…ache#248)

Fixes apache#239

### Motivation

As @wolfstudy pointed out here apache/pulsar-client-go#239 (comment)

There is a race on callbacks of `pendingReqs` when closing the connection while the run loop is still running, which will lead to calling a callback up to 2 times:
https://github.com/apache/pulsar-client-go/blob/e7f1673350f208b5063823282d14906d70d66904/pulsar/internal/connection.go#L669-L671

### Modifications

Introducing a `runLoopStoppedCh` to make sure that the run loop has already stopped when cleaning callbacks of `pendingReqs` in the `Close()`
hangc0276 pushed a commit to hangc0276/pulsar that referenced this pull request May 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
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.

3 participants