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 2019/06/26 02:25:09 UTC

[dubbo] branch 2.7.3-release updated: fix empty protocol in consul registry (#4354)

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

liujun pushed a commit to branch 2.7.3-release
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/2.7.3-release by this push:
     new 6b7d118  fix empty protocol in consul registry (#4354)
6b7d118 is described below

commit 6b7d11837a1e28f7c6e537d046778ffaf1c4ea95
Author: cvictory <sh...@gmail.com>
AuthorDate: Wed Jun 26 10:25:02 2019 +0800

    fix empty protocol in consul registry (#4354)
    
    fixes #4294
---
 .../common/beanutil/JavaBeanSerializeUtil.java     |  4 +--
 .../org/apache/dubbo/common/json/JSONArray.java    | 10 ++++----
 .../org/apache/dubbo/common/json/JSONObject.java   | 10 ++++----
 .../dubbo-demo-annotation-consumer/pom.xml         |  8 ++++++
 .../dubbo-demo-annotation-provider/pom.xml         |  8 ++++++
 .../dubbo-demo-xml/dubbo-demo-xml-consumer/pom.xml |  8 ++++++
 .../dubbo-demo-xml/dubbo-demo-xml-provider/pom.xml |  8 ++++++
 .../registry/support/ProviderInvokerWrapper.java   |  2 +-
 .../dubbo/registry/consul/ConsulRegistry.java      | 30 +++++++++++++++++-----
 .../remoting/transport/netty/NettyHelper.java      |  2 +-
 .../dubbo/decode/DubboTelnetDecodeTest.java        |  2 +-
 11 files changed, 71 insertions(+), 21 deletions(-)

diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/beanutil/JavaBeanSerializeUtil.java b/dubbo-common/src/main/java/org/apache/dubbo/common/beanutil/JavaBeanSerializeUtil.java
index 995965a..1ce5c45 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/beanutil/JavaBeanSerializeUtil.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/beanutil/JavaBeanSerializeUtil.java
@@ -237,12 +237,12 @@ public final class JavaBeanSerializeUtil {
             for (Map.Entry<Object, Object> entry : beanDescriptor) {
                 Object key = entry.getKey();
                 Object value = entry.getValue();
-                if (key != null && key instanceof JavaBeanDescriptor) {
+                if (key instanceof JavaBeanDescriptor) {
                     JavaBeanDescriptor keyDescriptor = (JavaBeanDescriptor) entry.getKey();
                     key = instantiateForDeserialize(keyDescriptor, loader, cache);
                     deserializeInternal(key, keyDescriptor, loader, cache);
                 }
-                if (value != null && value instanceof JavaBeanDescriptor) {
+                if (value instanceof JavaBeanDescriptor) {
                     JavaBeanDescriptor valueDescriptor = (JavaBeanDescriptor) entry.getValue();
                     value = instantiateForDeserialize(valueDescriptor, loader, cache);
                     deserializeInternal(value, valueDescriptor, loader, cache);
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONArray.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONArray.java
index f5e039c..a75bedb 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONArray.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONArray.java
@@ -47,7 +47,7 @@ public class JSONArray implements JSONNode {
      */
     public boolean getBoolean(int index, boolean def) {
         Object tmp = mArray.get(index);
-        return tmp != null && tmp instanceof Boolean ? ((Boolean) tmp).booleanValue() : def;
+        return tmp instanceof Boolean ? ((Boolean) tmp).booleanValue() : def;
     }
 
     /**
@@ -59,7 +59,7 @@ public class JSONArray implements JSONNode {
      */
     public int getInt(int index, int def) {
         Object tmp = mArray.get(index);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).intValue() : def;
+        return tmp instanceof Number ? ((Number) tmp).intValue() : def;
     }
 
     /**
@@ -71,7 +71,7 @@ public class JSONArray implements JSONNode {
      */
     public long getLong(int index, long def) {
         Object tmp = mArray.get(index);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).longValue() : def;
+        return tmp instanceof Number ? ((Number) tmp).longValue() : def;
     }
 
     /**
@@ -83,7 +83,7 @@ public class JSONArray implements JSONNode {
      */
     public float getFloat(int index, float def) {
         Object tmp = mArray.get(index);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).floatValue() : def;
+        return tmp instanceof Number ? ((Number) tmp).floatValue() : def;
     }
 
     /**
@@ -95,7 +95,7 @@ public class JSONArray implements JSONNode {
      */
     public double getDouble(int index, double def) {
         Object tmp = mArray.get(index);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).doubleValue() : def;
+        return tmp instanceof Number ? ((Number) tmp).doubleValue() : def;
     }
 
     /**
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONObject.java b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONObject.java
index 052f352..c04d4e1 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONObject.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/json/JSONObject.java
@@ -47,7 +47,7 @@ public class JSONObject implements JSONNode {
      */
     public boolean getBoolean(String key, boolean def) {
         Object tmp = mMap.get(key);
-        return tmp != null && tmp instanceof Boolean ? (Boolean) tmp : def;
+        return tmp instanceof Boolean ? (Boolean) tmp : def;
     }
 
     /**
@@ -59,7 +59,7 @@ public class JSONObject implements JSONNode {
      */
     public int getInt(String key, int def) {
         Object tmp = mMap.get(key);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).intValue() : def;
+        return tmp instanceof Number ? ((Number) tmp).intValue() : def;
     }
 
     /**
@@ -71,7 +71,7 @@ public class JSONObject implements JSONNode {
      */
     public long getLong(String key, long def) {
         Object tmp = mMap.get(key);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).longValue() : def;
+        return tmp instanceof Number ? ((Number) tmp).longValue() : def;
     }
 
     /**
@@ -83,7 +83,7 @@ public class JSONObject implements JSONNode {
      */
     public float getFloat(String key, float def) {
         Object tmp = mMap.get(key);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).floatValue() : def;
+        return tmp instanceof Number ? ((Number) tmp).floatValue() : def;
     }
 
     /**
@@ -95,7 +95,7 @@ public class JSONObject implements JSONNode {
      */
     public double getDouble(String key, double def) {
         Object tmp = mMap.get(key);
-        return tmp != null && tmp instanceof Number ? ((Number) tmp).doubleValue() : def;
+        return tmp instanceof Number ? ((Number) tmp).doubleValue() : def;
     }
 
     /**
diff --git a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/pom.xml b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/pom.xml
index c13bc26..c8f9d9d 100644
--- a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/pom.xml
+++ b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/pom.xml
@@ -44,6 +44,14 @@
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-registry-zookeeper</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-configcenter-zookeeper</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-rpc-dubbo</artifactId>
         </dependency>
         <dependency>
diff --git a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/pom.xml b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/pom.xml
index 4f164bc..02d0248 100644
--- a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/pom.xml
+++ b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/pom.xml
@@ -45,6 +45,14 @@
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-registry-zookeeper</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-configcenter-zookeeper</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-rpc-dubbo</artifactId>
         </dependency>
         <dependency>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/pom.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/pom.xml
index 4dfde79..5720551 100644
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/pom.xml
+++ b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/pom.xml
@@ -40,6 +40,14 @@
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-registry-zookeeper</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-configcenter-zookeeper</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-config-spring</artifactId>
         </dependency>
         <dependency>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/pom.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/pom.xml
index a93c41c..c683235 100644
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/pom.xml
+++ b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/pom.xml
@@ -42,6 +42,14 @@
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-registry-zookeeper</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-configcenter-zookeeper</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-rpc-dubbo</artifactId>
         </dependency>
         <dependency>
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/ProviderInvokerWrapper.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/ProviderInvokerWrapper.java
index ce079b7..a1eaad3 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/ProviderInvokerWrapper.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/ProviderInvokerWrapper.java
@@ -90,7 +90,7 @@ public class ProviderInvokerWrapper<T> implements Invoker {
 
     @Override
     public boolean equals(Object o) {
-        if (o == null || !(o instanceof ProviderInvokerWrapper)) {
+        if (!(o instanceof ProviderInvokerWrapper)) {
             return false;
         }
         ProviderInvokerWrapper other = (ProviderInvokerWrapper) o;
diff --git a/dubbo-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulRegistry.java b/dubbo-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulRegistry.java
index e7cf986..e4832ac 100644
--- a/dubbo-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulRegistry.java
+++ b/dubbo-registry/dubbo-registry-consul/src/main/java/org/apache/dubbo/registry/consul/ConsulRegistry.java
@@ -18,8 +18,10 @@
 package org.apache.dubbo.registry.consul;
 
 import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.URLBuilder;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
+import org.apache.dubbo.common.utils.CollectionUtils;
 import org.apache.dubbo.common.utils.NamedThreadFactory;
 import org.apache.dubbo.registry.NotifyListener;
 import org.apache.dubbo.registry.support.FailbackRegistry;
@@ -49,6 +51,8 @@ import java.util.stream.Collectors;
 
 import static java.util.concurrent.Executors.newCachedThreadPool;
 import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;
+import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;
+import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL;
 import static org.apache.dubbo.registry.Constants.CONSUMER_PROTOCOL;
 import static org.apache.dubbo.registry.Constants.PROVIDER_PROTOCOL;
 
@@ -136,12 +140,12 @@ public class ConsulRegistry extends FailbackRegistry {
             Response<Map<String, List<String>>> response = getAllServices(-1, buildWatchTimeout(url));
             index = response.getConsulIndex();
             List<HealthService> services = getHealthServices(response.getValue());
-            urls = convert(services);
+            urls = convert(services, url);
         } else {
             String service = url.getServiceKey();
             Response<List<HealthService>> response = getHealthServices(service, -1, buildWatchTimeout(url));
             index = response.getConsulIndex();
-            urls = convert(response.getValue());
+            urls = convert(response.getValue(), url);
         }
 
         notify(url, listener, urls);
@@ -175,7 +179,7 @@ public class ConsulRegistry extends FailbackRegistry {
             if (result == null || result.getValue() == null || result.getValue().isEmpty()) {
                 return new ArrayList<>();
             } else {
-                return  convert(result.getValue());
+                return convert(result.getValue(), url);
             }
         } catch (Throwable e) {
             throw new RpcException("Failed to lookup " + url + " from consul " + getUrl() + ", cause: " + e.getMessage(), e);
@@ -241,7 +245,10 @@ public class ConsulRegistry extends FailbackRegistry {
         return url.getProtocol().equals(PROVIDER_PROTOCOL);
     }
 
-    private List<URL> convert(List<HealthService> services) {
+    private List<URL> convert(List<HealthService> services, URL consumerURL) {
+        if (CollectionUtils.isEmpty(services)) {
+            return emptyURL(consumerURL);
+        }
         return services.stream()
                 .map(HealthService::getService)
                 .filter(Objects::nonNull)
@@ -252,6 +259,17 @@ public class ConsulRegistry extends FailbackRegistry {
                 .collect(Collectors.toList());
     }
 
+    private List<URL> emptyURL(URL consumerURL) {
+        // No Category Parameter
+        URL empty = URLBuilder.from(consumerURL)
+                .setProtocol(EMPTY_PROTOCOL)
+                .removeParameter(CATEGORY_KEY)
+                .build();
+        List<URL> result = new ArrayList<URL>();
+        result.add(empty);
+        return result;
+    }
+
     private NewService buildService(URL url) {
         NewService service = new NewService();
         service.setAddress(url.getHost());
@@ -318,7 +336,7 @@ public class ConsulRegistry extends FailbackRegistry {
             if (currentIndex != null && currentIndex > consulIndex) {
                 consulIndex = currentIndex;
                 List<HealthService> services = response.getValue();
-                List<URL> urls = convert(services);
+                List<URL> urls = convert(services, url);
                 for (NotifyListener listener : getSubscribed().get(url)) {
                     doNotify(url, listener, urls);
                 }
@@ -331,7 +349,7 @@ public class ConsulRegistry extends FailbackRegistry {
             if (currentIndex != null && currentIndex > consulIndex) {
                 consulIndex = currentIndex;
                 List<HealthService> services = getHealthServices(response.getValue());
-                List<URL> urls = convert(services);
+                List<URL> urls = convert(services, url);
                 for (NotifyListener listener : getSubscribed().get(url)) {
                     doNotify(url, listener, urls);
                 }
diff --git a/dubbo-remoting/dubbo-remoting-netty/src/main/java/org/apache/dubbo/remoting/transport/netty/NettyHelper.java b/dubbo-remoting/dubbo-remoting-netty/src/main/java/org/apache/dubbo/remoting/transport/netty/NettyHelper.java
index ec73094..64f41b2 100644
--- a/dubbo-remoting/dubbo-remoting-netty/src/main/java/org/apache/dubbo/remoting/transport/netty/NettyHelper.java
+++ b/dubbo-remoting/dubbo-remoting-netty/src/main/java/org/apache/dubbo/remoting/transport/netty/NettyHelper.java
@@ -27,7 +27,7 @@ final class NettyHelper {
 
     public static void setNettyLoggerFactory() {
         InternalLoggerFactory factory = InternalLoggerFactory.getDefaultFactory();
-        if (factory == null || !(factory instanceof DubboLoggerFactory)) {
+        if (!(factory instanceof DubboLoggerFactory)) {
             InternalLoggerFactory.setDefaultFactory(new DubboLoggerFactory());
         }
     }
diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/decode/DubboTelnetDecodeTest.java b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/decode/DubboTelnetDecodeTest.java
index e54d2e6..28c49cc 100644
--- a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/decode/DubboTelnetDecodeTest.java
+++ b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/decode/DubboTelnetDecodeTest.java
@@ -452,7 +452,7 @@ public class DubboTelnetDecodeTest {
     }
 
     private static boolean checkTelnetDecoded(Object msg) {
-        if (msg != null && msg instanceof String && !msg.toString().contains("Unsupported command:")) {
+        if (msg instanceof String && !msg.toString().contains("Unsupported command:")) {
             return true;
         }
         return false;