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/11 07:05:46 UTC
[incubator-dubbo] 01/02: Support enabled property.
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
commit e37319d3eaeeec9cf0d4b2c331e5c43b089eecf4
Author: ken.lj <ke...@gmail.com>
AuthorDate: Tue Sep 11 14:56:58 2018 +0800
Support enabled property.
---
.../java/org/apache/dubbo/rpc/cluster/Router.java | 4 +
.../dubbo/rpc/cluster/router/AbstractRouter.java | 11 +--
.../rpc/cluster/router/AbstractRouterRule.java | 2 +-
.../condition/config/ConfigConditionRouter.java | 91 ++++++++++++++--------
.../dubbo/rpc/cluster/router/tag/TagRouter.java | 5 +-
5 files changed, 69 insertions(+), 44 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 de1c251..65cf69f 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
@@ -75,4 +75,8 @@ public interface Router extends Comparable<Router> {
return false;
}
+ default int getPriority() {
+ return 0;
+ }
+
}
\ No newline at end of file
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouter.java
index ff87e34..f814336 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouter.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouter.java
@@ -35,7 +35,6 @@ public abstract class AbstractRouter implements Router {
protected int priority;
protected boolean force;
protected boolean enabled;
- protected boolean dynamic;
protected RouterChain routerChain;
protected URL url;
@@ -57,7 +56,7 @@ public abstract class AbstractRouter implements Router {
public <T> Map<String, List<Invoker<T>>> preRoute(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException {
Map<String, List<Invoker<T>>> map = new HashMap<>();
- if (CollectionUtils.isEmpty(invokers)) {
+ if (CollectionUtils.isEmpty(invokers) || !isEnabled()) {
return map;
}
@@ -91,14 +90,6 @@ public abstract class AbstractRouter implements Router {
this.enabled = enabled;
}
- public boolean isDynamic() {
- return dynamic;
- }
-
- public void setDynamic(boolean dynamic) {
- this.dynamic = dynamic;
- }
-
public int getPriority() {
return priority;
}
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouterRule.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouterRule.java
index cb6fa9c..b5755e9 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouterRule.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/AbstractRouterRule.java
@@ -21,7 +21,7 @@ package org.apache.dubbo.rpc.cluster.router;
*/
public abstract class AbstractRouterRule {
private String rawRule;
- private boolean runtime = false;
+ private boolean runtime = true;
private boolean force = false;
private boolean valid = true;
private boolean enabled = true;
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 fb6e731..f6f1cc3 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
@@ -116,11 +116,15 @@ public class ConfigConditionRouter extends AbstractRouter implements Configurati
}
// only one branch, always use the failover key
- for (Router router : appConditionRouters) {
- invokers = router.route(invokers, url, invocation);
+ if (isAppRuleEnabled()) {
+ for (Router router : appConditionRouters) {
+ invokers = router.route(invokers, url, invocation);
+ }
}
- for (Router router : conditionRouters) {
- invokers = router.route(invokers, url, invocation);
+ if (isRuleEnabled()) {
+ for (Router router : conditionRouters) {
+ invokers = router.route(invokers, url, invocation);
+ }
}
map.put(TreeNode.FAILOVER_KEY, invokers);
@@ -131,45 +135,32 @@ public class ConfigConditionRouter extends AbstractRouter implements Configurati
public <T> List<Invoker<T>> route(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException {
if (CollectionUtils.isEmpty(invokers)
|| (conditionRouters.size() == 0 && appConditionRouters.size() == 0)
- ) {
+ || !isEnabled()) {
return invokers;
}
- for (Router router : appConditionRouters) {
- invokers = router.route(invokers, url, invocation);
+
+ if (isAppRuleEnabled()) {
+ for (Router router : appConditionRouters) {
+ invokers = router.route(invokers, url, invocation);
+ }
}
- for (Router router : conditionRouters) {
- invokers = router.route(invokers, url, invocation);
+ if (isRuleEnabled()) {
+ for (Router router : conditionRouters) {
+ invokers = router.route(invokers, url, invocation);
+ }
}
return invokers;
}
@Override
public boolean isRuntime() {
- return (routerRule != null && routerRule.isValid() && routerRule.isRuntime())
- || (appRouterRule != null && appRouterRule.isValid() && appRouterRule.isRuntime());
- }
-
- private void generateConditions() {
- if (routerRule != null && routerRule.isValid()) {
- conditionRouters.clear();
- routerRule.getConditions().forEach(condition -> {
- // All sub rules have the same force, runtime value.
- ConditionRouter subRouter = new ConditionRouter(condition, routerRule.isForce());
- conditionRouters.add(subRouter);
- });
- }
+ return isRuleRuntime() || isAppRuleRuntime();
}
- private void generateAppConditions() {
- if (appRouterRule != null && appRouterRule.isValid()) {
- appConditionRouters.clear();
- appRouterRule.getConditions().forEach(condition -> {
- // All sub rules have the same force, runtime value.
- ConditionRouter subRouter = new ConditionRouter(condition, appRouterRule.isForce());
- appConditionRouters.add(subRouter);
- });
- }
+ @Override
+ public boolean isEnabled() {
+ return isAppRuleEnabled() || isRuleEnabled();
}
@Override
@@ -195,4 +186,42 @@ public class ConfigConditionRouter extends AbstractRouter implements Configurati
public int compareTo(Router o) {
return 0;
}
+
+ private boolean isAppRuleEnabled() {
+ return appRouterRule != null && appRouterRule.isValid() && appRouterRule.isEnabled();
+ }
+
+ private boolean isRuleEnabled() {
+ return routerRule != null && routerRule.isValid() && routerRule.isEnabled();
+ }
+
+ private boolean isAppRuleRuntime() {
+ return appRouterRule != null && appRouterRule.isValid() && appRouterRule.isRuntime();
+ }
+
+ private boolean isRuleRuntime() {
+ return routerRule != null && routerRule.isValid() && routerRule.isRuntime();
+ }
+
+ private void generateConditions() {
+ if (routerRule != null && routerRule.isValid()) {
+ conditionRouters.clear();
+ routerRule.getConditions().forEach(condition -> {
+ // All sub rules have the same force, runtime value.
+ ConditionRouter subRouter = new ConditionRouter(condition, routerRule.isForce());
+ conditionRouters.add(subRouter);
+ });
+ }
+ }
+
+ private void generateAppConditions() {
+ if (appRouterRule != null && appRouterRule.isValid()) {
+ appConditionRouters.clear();
+ appRouterRule.getConditions().forEach(condition -> {
+ // All sub rules have the same force, runtime value.
+ ConditionRouter subRouter = new ConditionRouter(condition, appRouterRule.isForce());
+ appConditionRouters.add(subRouter);
+ });
+ }
+ }
}
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 9d14d96..8dd11fa 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
@@ -112,7 +112,8 @@ public class TagRouter extends AbstractRouter implements Comparable<Router>, Con
checkAndInit(invokers.get(0).getUrl());
- if (tagRouterRule == null || !tagRouterRule.isValid()) {
+ if (tagRouterRule == null || !tagRouterRule.isValid() || !tagRouterRule.isEnabled()) {
+
return invokers;
}
@@ -172,7 +173,7 @@ public class TagRouter extends AbstractRouter implements Comparable<Router>, Con
checkAndInit(invokers.get(0).getUrl());
- if (tagRouterRule == null || !tagRouterRule.isValid() || isRuntime()) {
+ if (tagRouterRule == null || !tagRouterRule.isValid() || !tagRouterRule.isEnabled() || isRuntime()) {
map.put(TreeNode.FAILOVER_KEY, invokers);
return map;
}