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 <[email protected]> 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; }
