diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java index e069ead88c1..8daf825df8f 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java @@ -65,8 +65,6 @@ import static org.apache.dubbo.metadata.RevisionResolver.EMPTY_REVISION; import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getExportedServicesRevision; -; - /** * TODO, refactor to move revision-metadata mapping to ServiceDiscovery. Instances should have already been mapped with metadata when reached here. *

@@ -209,11 +207,7 @@ private synchronized void doOnEvent(ServiceInstancesChangedEvent event) { Map, Object>> portToRevisions = protocolRevisionsToUrls.computeIfAbsent(serviceInfo.getProtocol(), k -> new HashMap<>()); Map, Object> revisionsToUrls = portToRevisions.computeIfAbsent(serviceInfo.getPort(), k -> new HashMap<>()); - Object urls = revisionsToUrls.get(revisions); - if (urls == null) { - urls = getServiceUrlsCache(revisionToInstances, revisions, serviceInfo.getProtocol(), serviceInfo.getPort()); - revisionsToUrls.put(revisions, urls); - } + Object urls = revisionsToUrls.computeIfAbsent(revisions, k -> getServiceUrlsCache(revisionToInstances, revisions, serviceInfo.getProtocol(), serviceInfo.getPort())); List list = newServiceUrls.computeIfAbsent(serviceInfo.getPath(), k -> new LinkedList<>()); list.add(new ProtocolServiceKeyWithUrls(serviceInfo.getProtocolServiceKey(), (List) urls)); @@ -255,7 +249,7 @@ public synchronized void removeListener(String serviceKey, NotifyListener notify notifyListeners.removeIf(listener -> listener.getNotifyListener().equals(notifyListener)); // ServiceKey has no listener, remove set - if (notifyListeners.size() == 0) { + if (notifyListeners.isEmpty()) { this.listeners.remove(serviceKey); } } @@ -478,7 +472,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(getClass(), getServiceNames(), listeners); + return Objects.hash(getClass(), getServiceNames()); } protected class AddressRefreshRetryTask implements Runnable {