-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
[ISSUE#6116] Refactor ClientManager and make register client and schedule checkTask is atomic. #6118
Conversation
780ee08
to
9563b7b
Compare
… schedule checkTask is atomic.
9563b7b
to
2237cc8
Compare
@@ -170,7 +171,10 @@ public Response onApply(WriteRequest request) { | |||
|
|||
private void onInstanceRegister(Service service, Instance instance, String clientId) { | |||
Service singleton = ServiceManager.getInstance().getSingleton(service); | |||
Client client = clientManager.computeIfAbsent(clientId, () -> new IpPortBasedClient(clientId, false)); | |||
if (!clientManager.contains(clientId)) { |
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.
This contains
is unnecessary.
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.
To reduce invalid object create. When the node handle the register persistent instance, the client has been create and register. There is no need to create and try create again.
@@ -289,6 +293,7 @@ protected void loadSnapshot(byte[] snapshotBytes) { | |||
ConcurrentHashMap<String, IpPortBasedClient> snapshot = new ConcurrentHashMap<>(newData.size()); | |||
for (Map.Entry<String, ClientSyncData> entry : newData.entrySet()) { | |||
IpPortBasedClient snapshotClient = new IpPortBasedClient(entry.getKey(), false); |
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.
Consider using factory ?
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.
Using factory will add multiple dependencies. So I think no neccessary.
Please do not create a Pull Request without creating an issue first.
What is the purpose of the change
Fixes #6116 .
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.