You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/09/08 02:28:54 UTC
[dubbo] branch 3.0 updated: Optimize some code of the cluster
module (#8609)
This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 18799e5 Optimize some code of the cluster module (#8609)
18799e5 is described below
commit 18799e51a9056a79aa8eeaee44db1dadeb1ddb86
Author: 灼华 <43...@users.noreply.github.com>
AuthorDate: Wed Sep 8 10:28:40 2021 +0800
Optimize some code of the cluster module (#8609)
* Optimize some code
* Optimization
* Fix the bug of incorrect use of atomic variables
* Use util method to judge empty
* Remove unused import
* Adjust list sort
* Judge Non , remove unused tagRouterRule in TagDynamicStateRouter
* Extract constants
* Remove unused imports
* Remove unused method
---
.../org/apache/dubbo/rpc/cluster/Constants.java | 18 +++++++++++++-
.../org/apache/dubbo/rpc/cluster/RouterChain.java | 13 ++++------
.../rpc/cluster/router/AbstractRouterRule.java | 28 +++++++++++++++-------
.../config/model/ConditionRouterRule.java | 4 +++-
.../cluster/router/tag/TagDynamicStateRouter.java | 4 ++--
.../dubbo/rpc/cluster/router/tag/TagRouter.java | 2 +-
.../cluster/router/tag/TagStaticStateRouter.java | 20 ++--------------
.../cluster/router/tag/model/TagRouterRule.java | 4 +++-
.../cluster/support/wrapper/AbstractCluster.java | 5 ++--
.../support/wrapper/MockClusterInvoker.java | 25 +++++++++----------
.../client/migration/model/MigrationRule.java | 3 ++-
.../client/migration/model/SubMigrationRule.java | 4 +++-
12 files changed, 71 insertions(+), 59 deletions(-)
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Constants.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Constants.java
index 62a6b94..7af4210 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Constants.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/Constants.java
@@ -32,6 +32,22 @@ public interface Constants {
String FORCE_KEY = "force";
+ String RAW_RULE_KEY = "rawRule";
+
+ String VALID_KEY = "valid";
+
+ String ENABLED_KEY = "enabled";
+
+ String DYNAMIC_KEY = "dynamic";
+
+ String SCOPE_KEY = "scope";
+
+ String KEY_KEY = "key";
+
+ String CONDITIONS_KEY = "conditions";
+
+ String TAGS_KEY = "tags";
+
/**
* To decide whether to exclude unavailable invoker from the cluster
*/
@@ -95,7 +111,7 @@ public interface Constants {
/**
* The key for state router
*/
- String STATE_ROUTER_KEY="stateRouter";
+ String STATE_ROUTER_KEY = "stateRouter";
/**
* The key name for reference URL in register center
*/
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java
index 5385ea1..3500ac2 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/RouterChain.java
@@ -96,6 +96,7 @@ public class RouterChain<T> {
List<Router> routers = extensionFactories.stream()
.map(factory -> factory.getRouter(url))
+ .sorted(Router::compareTo)
.collect(Collectors.toList());
initWithRouters(routers);
@@ -120,7 +121,6 @@ public class RouterChain<T> {
public void initWithRouters(List<Router> builtinRouters) {
this.builtinRouters = builtinRouters;
this.routers = new ArrayList<>(builtinRouters);
- this.sort();
}
private void initWithStateRouters(List<StateRouter> builtinRouters) {
@@ -160,10 +160,6 @@ public class RouterChain<T> {
return stateRouters;
}
- private void sort() {
- Collections.sort(routers);
- }
-
/**
* @param url
* @param invocation
@@ -213,10 +209,10 @@ public class RouterChain<T> {
/**
* Build the asynchronous address cache for stateRouter.
- * @param notify Whether the addresses in registry has changed.
+ * @param notify Whether the addresses in registry have changed.
*/
private void buildCache(boolean notify) {
- if (invokers == null || invokers.size() <= 0) {
+ if (CollectionUtils.isEmpty(invokers)) {
return;
}
AddrCache<T> origin = cache.get();
@@ -272,8 +268,7 @@ public class RouterChain<T> {
* @param notify Whether the addresses in registry has changed.
*/
public void loop(boolean notify) {
- if (firstBuildCache.get()) {
- firstBuildCache.compareAndSet(true,false);
+ if (firstBuildCache.compareAndSet(true,false)) {
buildCache(notify);
}
if (notify) {
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 e12b8d8..ea65984 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
@@ -18,6 +18,16 @@ package org.apache.dubbo.rpc.cluster.router;
import java.util.Map;
+import static org.apache.dubbo.rpc.cluster.Constants.DYNAMIC_KEY;
+import static org.apache.dubbo.rpc.cluster.Constants.ENABLED_KEY;
+import static org.apache.dubbo.rpc.cluster.Constants.FORCE_KEY;
+import static org.apache.dubbo.rpc.cluster.Constants.KEY_KEY;
+import static org.apache.dubbo.rpc.cluster.Constants.PRIORITY_KEY;
+import static org.apache.dubbo.rpc.cluster.Constants.RAW_RULE_KEY;
+import static org.apache.dubbo.rpc.cluster.Constants.RUNTIME_KEY;
+import static org.apache.dubbo.rpc.cluster.Constants.SCOPE_KEY;
+import static org.apache.dubbo.rpc.cluster.Constants.VALID_KEY;
+
/**
* TODO Extract more code here if necessary
*/
@@ -34,40 +44,40 @@ public abstract class AbstractRouterRule {
private String key;
protected void parseFromMap0(Map<String, Object> map) {
- setRawRule((String) map.get("rawRule"));
+ setRawRule((String) map.get(RAW_RULE_KEY));
- Object runtime = map.get("runtime");
+ Object runtime = map.get(RUNTIME_KEY);
if (runtime != null) {
setRuntime(Boolean.parseBoolean(runtime.toString()));
}
- Object force = map.get("force");
+ Object force = map.get(FORCE_KEY);
if (force != null) {
setForce(Boolean.parseBoolean(force.toString()));
}
- Object valid = map.get("valid");
+ Object valid = map.get(VALID_KEY);
if (valid != null) {
setValid(Boolean.parseBoolean(valid.toString()));
}
- Object enabled = map.get("enabled");
+ Object enabled = map.get(ENABLED_KEY);
if (enabled != null) {
setEnabled(Boolean.parseBoolean(enabled.toString()));
}
- Object priority = map.get("priority");
+ Object priority = map.get(PRIORITY_KEY);
if (priority != null) {
setPriority(Integer.parseInt(priority.toString()));
}
- Object dynamic = map.get("dynamic");
+ Object dynamic = map.get(DYNAMIC_KEY);
if (dynamic != null) {
setDynamic(Boolean.parseBoolean(dynamic.toString()));
}
- setScope((String) map.get("scope"));
- setKey((String) map.get("key"));
+ setScope((String) map.get(SCOPE_KEY));
+ setKey((String) map.get(KEY_KEY));
}
public String getRawRule() {
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java
index b94a5ce..0b2aa42 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java
@@ -22,6 +22,8 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
+import static org.apache.dubbo.rpc.cluster.Constants.CONDITIONS_KEY;
+
/**
*
*/
@@ -33,7 +35,7 @@ public class ConditionRouterRule extends AbstractRouterRule {
ConditionRouterRule conditionRouterRule = new ConditionRouterRule();
conditionRouterRule.parseFromMap0(map);
- Object conditions = map.get("conditions");
+ Object conditions = map.get(CONDITIONS_KEY);
if (conditions != null && List.class.isAssignableFrom(conditions.getClass())) {
conditionRouterRule.setConditions(((List<Object>) conditions).stream()
.map(String::valueOf).collect(Collectors.toList()));
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagDynamicStateRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagDynamicStateRouter.java
index 347d1fd..cebd0e0 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagDynamicStateRouter.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagDynamicStateRouter.java
@@ -121,7 +121,7 @@ public class TagDynamicStateRouter extends AbstractStateRouter implements Config
@Override
public boolean isEnable() {
- return true;
+ return tagRouterRule != null && tagRouterRule.isEnabled();
}
@Override
@@ -240,7 +240,7 @@ public class TagDynamicStateRouter extends AbstractStateRouter implements Config
synchronized (this) {
if (!providerApplication.equals(application)) {
- if (!StringUtils.isEmpty(application)) {
+ if (StringUtils.isNotEmpty(application)) {
ruleRepository.removeListener(application + RULE_SUFFIX, this);
}
String key = providerApplication + RULE_SUFFIX;
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 2ffd318..e667d92 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
@@ -241,7 +241,7 @@ public class TagRouter extends AbstractRouter implements ConfigurationListener {
synchronized (this) {
if (!providerApplication.equals(application)) {
- if (!StringUtils.isEmpty(application)) {
+ if (StringUtils.isNotEmpty(application)) {
this.getRuleRepository().removeListener(application + RULE_SUFFIX, this);
}
String key = providerApplication + RULE_SUFFIX;
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStaticStateRouter.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStaticStateRouter.java
index d15745f..34317ab 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStaticStateRouter.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStaticStateRouter.java
@@ -22,8 +22,6 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import org.apache.dubbo.common.URL;
-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.StringUtils;
import org.apache.dubbo.rpc.Invocation;
@@ -33,7 +31,6 @@ import org.apache.dubbo.rpc.cluster.RouterChain;
import org.apache.dubbo.rpc.cluster.router.state.AbstractStateRouter;
import org.apache.dubbo.rpc.cluster.router.state.BitList;
import org.apache.dubbo.rpc.cluster.router.state.RouterCache;
-import org.apache.dubbo.rpc.cluster.router.tag.model.TagRouterRule;
import static org.apache.dubbo.common.constants.CommonConstants.TAG_KEY;
/**
@@ -42,11 +39,8 @@ import static org.apache.dubbo.common.constants.CommonConstants.TAG_KEY;
public class TagStaticStateRouter extends AbstractStateRouter {
public static final String NAME = "TAG_ROUTER";
private static final int TAG_ROUTER_DEFAULT_PRIORITY = 100;
- private static final Logger logger = LoggerFactory.getLogger(TagStaticStateRouter.class);
private static final String NO_TAG = "noTag";
- private TagRouterRule tagRouterRule;
-
public TagStaticStateRouter(URL url, RouterChain chain) {
super(url, chain);
this.priority = TAG_ROUTER_DEFAULT_PRIORITY;
@@ -87,10 +81,6 @@ public class TagStaticStateRouter extends AbstractStateRouter {
return tags;
}
- @Override
- public boolean isRuntime() {
- return tagRouterRule != null && tagRouterRule.isRuntime();
- }
@Override
public boolean isEnable() {
@@ -123,16 +113,10 @@ public class TagStaticStateRouter extends AbstractStateRouter {
Invoker<T> invoker = invokers.get(index);
String tag = invoker.getUrl().getParameter(TAG_KEY);
if (StringUtils.isEmpty(tag)) {
- BitList<Invoker<T>> noTagList = addrPool.putIfAbsent(NO_TAG, new BitList<>(invokers, true));
- if (noTagList == null) {
- noTagList = addrPool.get(NO_TAG);
- }
+ BitList<Invoker<T>> noTagList = addrPool.computeIfAbsent(NO_TAG, k -> new BitList<>(invokers, true));
noTagList.addIndex(index);
} else {
- BitList<Invoker<T>> list = addrPool.putIfAbsent(tag, new BitList<>(invokers, true));
- if (list == null) {
- list = addrPool.get(tag);
- }
+ BitList<Invoker<T>> list = addrPool.computeIfAbsent(tag, k -> new BitList<>(invokers, true));
list.addIndex(index);
}
}
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java
index 259456e..2c01c02 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java
@@ -25,6 +25,8 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
+import static org.apache.dubbo.rpc.cluster.Constants.TAGS_KEY;
+
/**
* %YAML1.2
* ---
@@ -51,7 +53,7 @@ public class TagRouterRule extends AbstractRouterRule {
TagRouterRule tagRouterRule = new TagRouterRule();
tagRouterRule.parseFromMap0(map);
- Object tags = map.get("tags");
+ Object tags = map.get(TAGS_KEY);
if (tags != null && List.class.isAssignableFrom(tags.getClass())) {
tagRouterRule.setTags(((List<Map<String, Object>>) tags).stream()
.map(Tag::parseFromMap).collect(Collectors.toList()));
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java
index d2a6ea3..fe08884 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java
@@ -40,11 +40,10 @@ import java.util.List;
import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_INTERCEPTOR_COMPATIBLE_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.INVOCATION_INTERCEPTOR_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.REFERENCE_FILTER_KEY;
-import static org.apache.dubbo.common.constants.CommonConstants.REFERENCE_INTERCEPTOR_KEY;
public abstract class AbstractCluster implements Cluster {
- private <T> Invoker<T> buildClusterInterceptors(AbstractClusterInvoker<T> clusterInvoker, String key) {
+ private <T> Invoker<T> buildClusterInterceptors(AbstractClusterInvoker<T> clusterInvoker) {
// AbstractClusterInvoker<T> last = clusterInvoker;
AbstractClusterInvoker<T> last = buildInterceptorInvoker(new ClusterFilterInvoker<>(clusterInvoker));
@@ -59,7 +58,7 @@ public abstract class AbstractCluster implements Cluster {
if (directory instanceof StaticDirectory) {
return doJoin(directory);
}
- return buildClusterInterceptors(doJoin(directory), directory.getUrl().getParameter(REFERENCE_INTERCEPTOR_KEY));
+ return buildClusterInterceptors(doJoin(directory));
}
private <T> AbstractClusterInvoker<T> buildInterceptorInvoker(AbstractClusterInvoker<T> invoker) {
diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java
index 8dbf6f5..a5b5200 100644
--- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java
+++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java
@@ -34,6 +34,7 @@ import org.apache.dubbo.rpc.support.MockInvoker;
import java.util.List;
import static org.apache.dubbo.rpc.Constants.MOCK_KEY;
+import static org.apache.dubbo.rpc.cluster.Constants.FORCE_KEY;
import static org.apache.dubbo.rpc.cluster.Constants.INVOCATION_NEED_MOCK;
public class MockClusterInvoker<T> implements ClusterInvoker<T> {
@@ -85,13 +86,13 @@ public class MockClusterInvoker<T> implements ClusterInvoker<T> {
@Override
public Result invoke(Invocation invocation) throws RpcException {
- Result result = null;
+ Result result;
String value = getUrl().getMethodParameter(invocation.getMethodName(), MOCK_KEY, Boolean.FALSE.toString()).trim();
if (value.length() == 0 || "false".equalsIgnoreCase(value)) {
//no mock
result = this.invoker.invoke(invocation);
- } else if (value.startsWith("force")) {
+ } else if (value.startsWith(FORCE_KEY)) {
if (logger.isWarnEnabled()) {
logger.warn("force-mock: " + invocation.getMethodName() + " force-mock enabled , url : " + getUrl());
}
@@ -128,22 +129,22 @@ public class MockClusterInvoker<T> implements ClusterInvoker<T> {
@SuppressWarnings({"unchecked", "rawtypes"})
private Result doMockInvoke(Invocation invocation, RpcException e) {
- Result result = null;
- Invoker<T> minvoker;
+ Result result;
+ Invoker<T> mockInvoker;
List<Invoker<T>> mockInvokers = selectMockInvoker(invocation);
if (CollectionUtils.isEmpty(mockInvokers)) {
- minvoker = (Invoker<T>) new MockInvoker(getUrl(), directory.getInterface());
+ mockInvoker = (Invoker<T>) new MockInvoker(getUrl(), directory.getInterface());
} else {
- minvoker = mockInvokers.get(0);
+ mockInvoker = mockInvokers.get(0);
}
try {
- result = minvoker.invoke(invocation);
- } catch (RpcException me) {
- if (me.isBiz()) {
- result = AsyncRpcResult.newDefaultAsyncResult(me.getCause(), invocation);
+ result = mockInvoker.invoke(invocation);
+ } catch (RpcException mockException) {
+ if (mockException.isBiz()) {
+ result = AsyncRpcResult.newDefaultAsyncResult(mockException.getCause(), invocation);
} else {
- throw new RpcException(me.getCode(), getMockExceptionMessage(e, me), me.getCause());
+ throw new RpcException(mockException.getCode(), getMockExceptionMessage(e, mockException), mockException.getCause());
}
} catch (Throwable me) {
throw new RpcException(getMockExceptionMessage(e, me), me.getCause());
@@ -173,7 +174,7 @@ public class MockClusterInvoker<T> implements ClusterInvoker<T> {
//TODO generic invoker?
if (invocation instanceof RpcInvocation) {
//Note the implicit contract (although the description is added to the interface declaration, but extensibility is a problem. The practice placed in the attachment needs to be improved)
- ((RpcInvocation) invocation).setAttachment(INVOCATION_NEED_MOCK, Boolean.TRUE.toString());
+ invocation.setAttachment(INVOCATION_NEED_MOCK, Boolean.TRUE.toString());
//directory will return a list of normal invokers if Constants.INVOCATION_NEED_MOCK is absent or not true in invocation, otherwise, a list of mock invokers will return.
try {
invokers = directory.list(invocation);
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/MigrationRule.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/MigrationRule.java
index 27a51fc..14d5c06 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/MigrationRule.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/MigrationRule.java
@@ -37,6 +37,7 @@ import static org.apache.dubbo.registry.Constants.MIGRATION_PROMOTION_KEY;
import static org.apache.dubbo.registry.Constants.MIGRATION_STEP_KEY;
import static org.apache.dubbo.registry.Constants.MIGRATION_THRESHOLD_KEY;
import static org.apache.dubbo.registry.client.migration.MigrationRuleHandler.DUBBO_SERVICEDISCOVERY_MIGRATION;
+import static org.apache.dubbo.rpc.cluster.Constants.FORCE_KEY;
/**
* # key = demo-consumer.migration
@@ -105,7 +106,7 @@ public class MigrationRule {
migrationRule.setDelay(Integer.valueOf(delay.toString()));
}
- Object force = map.get("force");
+ Object force = map.get(FORCE_KEY);
if (force != null) {
migrationRule.setForce(Boolean.valueOf(force.toString()));
}
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/SubMigrationRule.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/SubMigrationRule.java
index c64c9c9..b9cd505 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/SubMigrationRule.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/model/SubMigrationRule.java
@@ -18,6 +18,8 @@ package org.apache.dubbo.registry.client.migration.model;
import java.util.Map;
+import static org.apache.dubbo.rpc.cluster.Constants.FORCE_KEY;
+
public class SubMigrationRule {
private String serviceKey;
private MigrationStep step;
@@ -50,7 +52,7 @@ public class SubMigrationRule {
interfaceMigrationRule.setDelay(Integer.valueOf(delay.toString()));
}
- Object force = map.get("force");
+ Object force = map.get(FORCE_KEY);
if (force != null) {
interfaceMigrationRule.setForce(Boolean.valueOf(force.toString()));
}