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 2020/09/17 09:57:44 UTC
[dubbo] 02/02: Fix service discovery delay subscription
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
commit 4808d7bff327513d2a7fcb354d8b367973463d2d
Author: ken.lj <ke...@gmail.com>
AuthorDate: Thu Sep 17 17:56:52 2020 +0800
Fix service discovery delay subscription
---
.../src/main/java/org/apache/dubbo/common/config/Environment.java | 2 +-
.../src/main/resources/spring/dubbo-consumer.xml | 3 +--
.../org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java | 1 +
.../registry/client/migration/ServiceDiscoveryMigrationInvoker.java | 6 +++++-
4 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
index fea8841..37f5e82 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/Environment.java
@@ -159,7 +159,7 @@ public class Environment extends LifecycleAdapter implements FrameworkExt {
public Configuration getDynamicGlobalConfiguration() {
if (dynamicGlobalConfiguration == null) {
- if (dynamicConfiguration != null) {
+ if (dynamicConfiguration == null) {
throw new IllegalStateException("Init dynamic configuration before use.");
}
dynamicGlobalConfiguration = new CompositeConfiguration();
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml
index 5475752..f71fc5f 100644
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml
+++ b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml
@@ -23,12 +23,11 @@
<dubbo:application name="demo-consumer">
<dubbo:parameter key="mapping-type" value="metadata"/>
- <dubbo:parameter key="enable-auto-migration" value="true"/>
</dubbo:application>
<!-- <dubbo:metadata-report address="zookeeper://127.0.0.1:2181"/>-->
- <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
+ <dubbo:registry address="zookeeper://127.0.0.1:2181?registry-type=service"/>
<dubbo:reference id="demoService" check="false"
interface="org.apache.dubbo.demo.DemoService"/>
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
index 5977a8b..1a79ea2 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
@@ -267,6 +267,7 @@ public class ServiceDiscoveryRegistry implements Registry {
if (check) {
throw new IllegalStateException("Should has at least one way to know which services this interface belongs to, subscription url: " + url);
}
+ return;
}
subscribeURLs(url, listener, serviceNames);
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/ServiceDiscoveryMigrationInvoker.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/ServiceDiscoveryMigrationInvoker.java
index 7d2642f..fb9e17e 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/ServiceDiscoveryMigrationInvoker.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/ServiceDiscoveryMigrationInvoker.java
@@ -17,6 +17,8 @@
package org.apache.dubbo.registry.client.migration;
import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.logger.Logger;
+import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.registry.Registry;
import org.apache.dubbo.registry.integration.RegistryProtocol;
import org.apache.dubbo.rpc.Invocation;
@@ -26,6 +28,7 @@ import org.apache.dubbo.rpc.cluster.Cluster;
import org.apache.dubbo.rpc.cluster.ClusterInvoker;
public class ServiceDiscoveryMigrationInvoker<T> extends MigrationInvoker<T> {
+ private static final Logger logger = LoggerFactory.getLogger(ServiceDiscoveryMigrationInvoker.class);
public ServiceDiscoveryMigrationInvoker(RegistryProtocol registryProtocol, Cluster cluster, Registry registry, Class<T> type, URL url, URL consumerUrl) {
super(registryProtocol, cluster, registry, type, url, consumerUrl);
@@ -38,7 +41,8 @@ public class ServiceDiscoveryMigrationInvoker<T> extends MigrationInvoker<T> {
@Override
public synchronized void fallbackToInterfaceInvoker() {
- destroyServiceDiscoveryInvoker(this.getServiceDiscoveryInvoker());
+ logger.error("Service discovery registry type does not support discovery of interface level addresses, " + getRegistryUrl());
+ migrateToServiceDiscoveryInvoker(true);
}
@Override