You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2021/02/04 06:54:44 UTC

[dubbo-spi-extensions] 09/47: fix service discovery impls

This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch 2.7.x
in repository https://gitbox.apache.org/repos/asf/dubbo-spi-extensions.git

commit 7f404f6c647b3a1249f5b982123ec4787d109298
Author: ken.lj <ke...@gmail.com>
AuthorDate: Thu Aug 27 16:27:15 2020 +0800

    fix service discovery impls
---
 .../dubbo/registry/consul/ConsulServiceDiscovery.java | 19 +++++++++++--------
 .../dubbo/registry/etcd/EtcdServiceDiscovery.java     |  7 +++++--
 .../dubbo/registry/eureka/EurekaServiceDiscovery.java |  5 ++++-
 3 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/dubbo-spi-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulServiceDiscovery.java b/dubbo-spi-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulServiceDiscovery.java
index 5d5e98b..f1d3d3b 100644
--- a/dubbo-spi-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulServiceDiscovery.java
+++ b/dubbo-spi-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulServiceDiscovery.java
@@ -23,6 +23,7 @@ import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.common.utils.NamedThreadFactory;
 import org.apache.dubbo.common.utils.StringUtils;
 import org.apache.dubbo.event.EventListener;
+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;
 import org.apache.dubbo.registry.client.DefaultServiceInstance;
 import org.apache.dubbo.registry.client.ServiceDiscovery;
 import org.apache.dubbo.registry.client.ServiceInstance;
@@ -65,7 +66,7 @@ import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.WATCH_TIME
 /**
  * 2019-07-31
  */
-public class ConsulServiceDiscovery implements ServiceDiscovery, EventListener<ServiceInstancesChangedEvent> {
+public class ConsulServiceDiscovery extends AbstractServiceDiscovery implements EventListener<ServiceInstancesChangedEvent> {
 
     private static final Logger logger = LoggerFactory.getLogger(ConsulServiceDiscovery.class);
 
@@ -120,6 +121,7 @@ public class ConsulServiceDiscovery implements ServiceDiscovery, EventListener<S
 
     @Override
     public void register(ServiceInstance serviceInstance) throws RuntimeException {
+        super.register(serviceInstance);
         NewService consulService = buildService(serviceInstance);
         ttlScheduler.add(consulService.getId());
         client.agentServiceRegister(consulService);
@@ -127,17 +129,18 @@ public class ConsulServiceDiscovery implements ServiceDiscovery, EventListener<S
 
     @Override
     public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {
-        if (notifier == null) {
-            String serviceName = listener.getServiceName();
-            Response<List<HealthService>> response = getHealthServices(serviceName, -1, buildWatchTimeout());
-            Long consulIndex = response.getConsulIndex();
-            notifier = new ConsulNotifier(serviceName, consulIndex);
-        }
-        notifierExecutor.execute(notifier);
+//        if (notifier == null) {
+//            String serviceName = listener.getServiceNames();
+//            Response<List<HealthService>> response = getHealthServices(serviceName, -1, buildWatchTimeout());
+//            Long consulIndex = response.getConsulIndex();
+//            notifier = new ConsulNotifier(serviceName, consulIndex);
+//        }
+//        notifierExecutor.execute(notifier);
     }
 
     @Override
     public void update(ServiceInstance serviceInstance) throws RuntimeException {
+        super.register(serviceInstance);
         // TODO
         // client.catalogRegister(buildCatalogService(serviceInstance));
     }
diff --git a/dubbo-spi-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java b/dubbo-spi-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java
index a26ebc6..0f41de3 100644
--- a/dubbo-spi-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java
+++ b/dubbo-spi-registry/dubbo-registry-etcd3/src/main/java/org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java
@@ -24,6 +24,7 @@ import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.common.utils.ConcurrentHashSet;
 import org.apache.dubbo.event.EventDispatcher;
 import org.apache.dubbo.event.EventListener;
+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;
 import org.apache.dubbo.registry.client.DefaultServiceInstance;
 import org.apache.dubbo.registry.client.ServiceDiscovery;
 import org.apache.dubbo.registry.client.ServiceInstance;
@@ -50,7 +51,7 @@ import java.util.concurrent.ConcurrentHashMap;
 /**
  * 2019-07-08
  */
-public class EtcdServiceDiscovery implements ServiceDiscovery, EventListener<ServiceInstancesChangedEvent> {
+public class EtcdServiceDiscovery extends AbstractServiceDiscovery implements EventListener<ServiceInstancesChangedEvent> {
 
     private final static Logger logger = LoggerFactory.getLogger(EtcdServiceDiscovery.class);
 
@@ -102,6 +103,7 @@ public class EtcdServiceDiscovery implements ServiceDiscovery, EventListener<Ser
 
     @Override
     public void register(ServiceInstance serviceInstance) throws RuntimeException {
+        super.register(serviceInstance);
         try {
             this.serviceInstance = serviceInstance;
             String path = toPath(serviceInstance);
@@ -127,6 +129,7 @@ public class EtcdServiceDiscovery implements ServiceDiscovery, EventListener<Ser
 
     @Override
     public void update(ServiceInstance serviceInstance) throws RuntimeException {
+        super.register(serviceInstance);
         try {
             String path = toPath(serviceInstance);
             etcdClient.putEphemeral(path, new Gson().toJson(serviceInstance));
@@ -158,7 +161,7 @@ public class EtcdServiceDiscovery implements ServiceDiscovery, EventListener<Ser
 
     @Override
     public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {
-        registerServiceWatcher(listener.getServiceName());
+        listener.getServiceNames().forEach(serviceName -> registerServiceWatcher(serviceName));
     }
 
     @Override
diff --git a/dubbo-spi-registry/dubbo-registry-eureka/src/main/java/org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java b/dubbo-spi-registry/dubbo-registry-eureka/src/main/java/org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java
index bb49c10..3aebd7a 100644
--- a/dubbo-spi-registry/dubbo-registry-eureka/src/main/java/org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java
+++ b/dubbo-spi-registry/dubbo-registry-eureka/src/main/java/org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.registry.eureka;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.event.EventDispatcher;
+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;
 import org.apache.dubbo.registry.client.DefaultServiceInstance;
 import org.apache.dubbo.registry.client.ServiceDiscovery;
 import org.apache.dubbo.registry.client.ServiceInstance;
@@ -53,7 +54,7 @@ import static org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.parseSer
 /**
  * Eureka {@link ServiceDiscovery} implementation based on Eureka API
  */
-public class EurekaServiceDiscovery implements ServiceDiscovery {
+public class EurekaServiceDiscovery extends AbstractServiceDiscovery {
 
     private final EventDispatcher eventDispatcher = getDefaultExtension();
 
@@ -205,6 +206,7 @@ public class EurekaServiceDiscovery implements ServiceDiscovery {
 
     @Override
     public void register(ServiceInstance serviceInstance) throws RuntimeException {
+        super.register(serviceInstance);
         initEurekaClient(serviceInstance);
         setInstanceStatus(InstanceInfo.InstanceStatus.UP);
     }
@@ -217,6 +219,7 @@ public class EurekaServiceDiscovery implements ServiceDiscovery {
 
     @Override
     public void update(ServiceInstance serviceInstance) throws RuntimeException {
+        super.update(serviceInstance);
         setInstanceStatus(serviceInstance.isHealthy() ? InstanceInfo.InstanceStatus.UP :
                 InstanceInfo.InstanceStatus.UNKNOWN);
     }