-
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
[fix][meta] Bookie Info lost by notification race condition. #20642
[fix][meta] Bookie Info lost by notification race condition. #20642
Conversation
@mattisonchao Please add the following content to your PR description and select a checkbox:
|
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.
Nice catch!
Codecov Report
@@ Coverage Diff @@
## master #20642 +/- ##
============================================
+ Coverage 72.05% 73.12% +1.06%
- Complexity 31718 32061 +343
============================================
Files 1855 1867 +12
Lines 138376 138782 +406
Branches 15198 15266 +68
============================================
+ Hits 99703 101479 +1776
+ Misses 30656 29262 -1394
- Partials 8017 8041 +24
Flags with carried forward coverage won't be shown. Click here to find out more.
|
Great. @mattisonchao one suggestion is that you can link to a permalink instead of |
(cherry picked from commit 43dc123)
@hangc0276 @mattisonchao The zookeeper version quoted in this P person is 3.8.1(master) instead of 3.6.4 (branch-2.10). |
Motivation
This fixes #20643.
Investigating
Why is the exception
Bookie handle is not available
?We found this problem in the broker's continued to report
Bookie handle is not available
exception longer than 6 hours. The call chain should be as follows:PulsarRegistrationClient
to get bookie info, but the local cache doesn't have it, and then throws theBKBookieHandleNotAvailableException
Why did cache lose Bookie's info?
The following is an analysis that has yet to be rigorously tested. (Since this will consume a relatively long time)
ZKRegistrationManager
's implementation, transit bookie mode from writable to read-only should create a read-only bookie node and then delete the writable bookie node.Modifications
Verifying this change
Documentation
doc
doc-required
doc-not-needed
doc-complete