[ISSUE #5351] Remove blocked thread for Protocol metadata #5354
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.
Please do not create a Pull Request without creating an issue first.
What is the purpose of the change
After depending Jraft, protocol metadata can be subscribe for each key. One key and value will build an ValueItem to save data and observer. But the old implementation only four notify thread and ValueItem will block notify thread if no observer, which will cause some observer may not be called if there are more than four ValueItems without observer.
So I change the logic. Remove the notify thread and notify observer by main thread.
For non-block thread, removing the wait logic for observer. And when observer added, call
update
immediately to let observer can be notify at first.After this PR, the observer of naming persistent server will be called, and change the
Down
toUp
as expected.Brief changelog
Verifying this change
Follow this checklist to help us incorporate your contribution quickly and easily:
[ISSUE #123] Fix UnknownException when host config not exist
. Each commit in the pull request should have a meaningful subject line and body.mvn -B clean package apache-rat:check findbugs:findbugs -Dmaven.test.skip=true
to make sure basic checks pass. Runmvn clean install -DskipITs
to make sure unit-test pass. Runmvn clean test-compile failsafe:integration-test
to make sure integration-test pass.