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/11/25 06:19:57 UTC

[dubbo] 11/45: improve:解决可能卡顿的问题

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

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

commit d89d25e3df5f7cbad4c8d6601c275c11a8a6c10f
Author: 未宇 <li...@alibaba-inc.com>
AuthorDate: Mon Sep 28 15:07:50 2020 +0800

    improve:解决可能卡顿的问题
---
 compiler/pom.xml                                      |  2 +-
 dubbo-build-tools/pom.xml                             |  2 +-
 .../rpc/cluster/support/AbstractClusterInvoker.java   | 19 +++++++++++++++----
 .../apache/dubbo/config/AbstractInterfaceConfig.java  | 10 +++++-----
 dubbo-dependencies-bom/pom.xml                        |  2 +-
 .../dubbo-dependencies-zookeeper/pom.xml              |  2 +-
 pom.xml                                               |  4 ++--
 7 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/compiler/pom.xml b/compiler/pom.xml
index 5ec07c7..30309d3 100644
--- a/compiler/pom.xml
+++ b/compiler/pom.xml
@@ -26,7 +26,7 @@
 
     <groupId>org.apache.dubbo</groupId>
     <artifactId>dubbo-compiler</artifactId>
-    <version>2.7.8-hsf3-4</version>
+    <version>2.7.8-hsf3-5</version>
 
     <packaging>jar</packaging>
 
diff --git a/dubbo-build-tools/pom.xml b/dubbo-build-tools/pom.xml
index 3e08ebf..cfee28d 100644
--- a/dubbo-build-tools/pom.xml
+++ b/dubbo-build-tools/pom.xml
@@ -20,7 +20,7 @@
 
     <groupId>org.apache.dubbo</groupId>
     <artifactId>dubbo-build-tools</artifactId>
-    <version>2.7.8-hsf3-4</version>
+    <version>2.7.8-hsf3-5</version>
     <packaging>jar</packaging>
 
     <properties>
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java
index b1e8a95..7caaba2 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java
@@ -215,19 +215,30 @@ public abstract class AbstractClusterInvoker<T> implements ClusterInvoker<T> {
 
         // First, try picking a invoker not in `selected`.
         for (Invoker<T> invoker : invokers) {
-            if (availablecheck && !invoker.isAvailable()) {
-                continue;
-            }
-
             if (selected == null || !selected.contains(invoker)) {
                 reselectInvokers.add(invoker);
             }
         }
 
+        if (availablecheck) {
+            int retryCount = 10;
+            if (reselectInvokers.size() < retryCount) {
+                retryCount = reselectInvokers.size();
+            }
+            for (int retry = 0; retry < retryCount; retry++) {
+                Invoker resultInvoker = loadbalance.select(reselectInvokers, getUrl(), invocation);
+                if (resultInvoker != null && resultInvoker.isAvailable()) {
+                    return resultInvoker;
+                }
+
+            }
+        }
+
         if (!reselectInvokers.isEmpty()) {
             return loadbalance.select(reselectInvokers, getUrl(), invocation);
         }
 
+
         // Just pick an available invoker using loadbalance policy
         if (selected != null) {
             for (Invoker<T> invoker : selected) {
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
index 82b5636..2f27de9 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/config/AbstractInterfaceConfig.java
@@ -225,11 +225,11 @@ public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {
                             "<dubbo:method name=\"\" ... /></<dubbo:reference>");
                 }
 
-                boolean hasMethod = Arrays.stream(interfaceClass.getMethods()).anyMatch(method -> method.getName().equals(methodName));
-                if (!hasMethod) {
-                    throw new IllegalStateException("The interface " + interfaceClass.getName()
-                            + " not found method " + methodName);
-                }
+//                boolean hasMethod = Arrays.stream(interfaceClass.getMethods()).anyMatch(method -> method.getName().equals(methodName));
+//                if (!hasMethod) {
+//                    throw new IllegalStateException("The interface " + interfaceClass.getName()
+//                            + " not found method " + methodName);
+//                }
             }
         }
     }
diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml
index 5cdb530..d21c464 100644
--- a/dubbo-dependencies-bom/pom.xml
+++ b/dubbo-dependencies-bom/pom.xml
@@ -163,7 +163,7 @@
         <mortbay_jetty_version>6.1.26</mortbay_jetty_version>
         <portlet_version>2.0</portlet_version>
         <maven_flatten_version>1.1.0</maven_flatten_version>
-        <revision>2.7.8-hsf3-4</revision>
+        <revision>2.7.8-hsf3-5</revision>
     </properties>
 
     <dependencyManagement>
diff --git a/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml b/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml
index 658ce35..298251f 100644
--- a/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml
+++ b/dubbo-dependencies/dubbo-dependencies-zookeeper/pom.xml
@@ -32,7 +32,7 @@
     <packaging>pom</packaging>
 
     <properties>
-        <revision>2.7.8-hsf3-4</revision>
+        <revision>2.7.8-hsf3-5</revision>
         <maven_flatten_version>1.1.0</maven_flatten_version>
     </properties>
 
diff --git a/pom.xml b/pom.xml
index 73153ca..3d2ac4a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -126,7 +126,7 @@
         <arguments />
         <checkstyle.skip>true</checkstyle.skip>
         <rat.skip>true</rat.skip>
-        <revision>2.7.8-hsf3-4</revision>
+        <revision>2.7.8-hsf3-5</revision>
     </properties>
 
     <modules>
@@ -257,7 +257,7 @@
                             <dependency>
                                 <groupId>org.apache.dubbo</groupId>
                                 <artifactId>dubbo-build-tools</artifactId>
-                                <version>2.7.8-hsf3-4</version>
+                                <version>2.7.8-hsf3-5</version>
                             </dependency>
                         </dependencies>
                         <executions>