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 2018/09/07 11:03:55 UTC
[incubator-dubbo] branch dev-metadata updated: Fix problem when
rule need to run at runtime.
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch dev-metadata
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git
The following commit(s) were added to refs/heads/dev-metadata by this push:
new a5695af Fix problem when rule need to run at runtime.
a5695af is described below
commit a5695af6873f3319644ed4d6b662054a76f6e2cf
Author: ken.lj <ke...@gmail.com>
AuthorDate: Fri Sep 7 19:03:35 2018 +0800
Fix problem when rule need to run at runtime.
---
.../src/main/java/org/apache/dubbo/rpc/cluster/Router.java | 3 ++-
.../java/org/apache/dubbo/rpc/cluster/router/InvokerTreeCache.java | 4 ++++
.../apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java | 6 ------
.../rpc/cluster/router/condition/config/ConfigConditionRouter.java | 3 +++
.../org/apache/dubbo/rpc/cluster/router/script/ScriptRouter.java | 6 ------
.../java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java | 6 +++++-
6 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Router.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Router.java
index a9f2e79..de1c251 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Router.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Router.java
@@ -20,6 +20,7 @@ import org.apache.dubbo.common.URL;
import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.RpcException;
+import org.apache.dubbo.rpc.cluster.router.TreeNode;
import java.util.List;
import java.util.Map;
@@ -67,7 +68,7 @@ public interface Router extends Comparable<Router> {
}
default String getKey() {
- return "";
+ return TreeNode.FAILOVER_KEY;
}
default boolean isForce() {
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/InvokerTreeCache.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/InvokerTreeCache.java
index 8575760..7a497a3 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/InvokerTreeCache.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/InvokerTreeCache.java
@@ -101,6 +101,10 @@ public class InvokerTreeCache<T> {
// FIXME check force logic here
String forceKey = "force." + failoverNode.getConditionKey();
if (Boolean.valueOf(invocation.getAttachment(forceKey, url.getParameter(forceKey, "false")))) {
+ /**
+ * This may mistakely return empty list for runtime routers
+ * see {@link org.apache.dubbo.rpc.cluster.router.tag.TagRouter.getKey()} for the workaround.
+ */
return Collections.emptyList();
}
return getInvokers(failoverNode, url, invocation);
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java
index 176aef9..f1fc6c7 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java
@@ -28,7 +28,6 @@ import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.cluster.Router;
import org.apache.dubbo.rpc.cluster.router.AbstractRouter;
-import org.apache.dubbo.rpc.cluster.router.TreeNode;
import java.text.ParseException;
import java.util.ArrayList;
@@ -190,11 +189,6 @@ public class ConditionRouter extends AbstractRouter implements Comparable<Router
}
@Override
- public String getKey() {
- return TreeNode.FAILOVER_KEY;
- }
-
- @Override
public URL getUrl() {
return url;
}
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ConfigConditionRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ConfigConditionRouter.java
index 68c51d6..fb6e731 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ConfigConditionRouter.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ConfigConditionRouter.java
@@ -174,6 +174,9 @@ public class ConfigConditionRouter extends AbstractRouter implements Configurati
@Override
public String getKey() {
+ if (isRuntime()) {
+ return super.getKey();
+ }
return TreeNode.FAILOVER_KEY;
}
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptRouter.java
index 25cf160..514ebda 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptRouter.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptRouter.java
@@ -26,7 +26,6 @@ import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.cluster.Router;
import org.apache.dubbo.rpc.cluster.router.AbstractRouter;
-import org.apache.dubbo.rpc.cluster.router.TreeNode;
import javax.script.Bindings;
import javax.script.Compilable;
@@ -122,11 +121,6 @@ public class ScriptRouter extends AbstractRouter {
}
@Override
- public String getKey() {
- return TreeNode.FAILOVER_KEY;
- }
-
- @Override
public boolean isForce() {
return url.getParameter(Constants.FORCE_KEY, false);
}
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java
index 008c1e5..4638815 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java
@@ -131,7 +131,7 @@ public class TagRouter extends AbstractRouter implements Comparable<Router>, Con
}
// dynamic tag group doesn't have any item about the requested app OR it's null after filtered by dynamic tag group but force=false.
// check static tag
- result = filterInvoker(invokers, invoker -> invoker.getUrl().getParameter(Constants.TAG_KEY).equals(tag));
+ result = filterInvoker(invokers, invoker -> tag.equals(invoker.getUrl().getParameter(Constants.TAG_KEY)));
if (CollectionUtils.isNotEmpty(result) || url.getParameter(Constants.FORCE_USE_TAG, true)) {
return result;
}
@@ -219,7 +219,11 @@ public class TagRouter extends AbstractRouter implements Comparable<Router>, Con
return tagRouterRule != null && tagRouterRule.isRuntime();
}
+ @Override
public String getKey() {
+ if (isRuntime()) {
+ return super.getKey();
+ }
return Constants.TAG_KEY;
}