This is an automated email from the ASF dual-hosted git repository. iluo 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 <[email protected]> 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); }
