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 2022/06/06 08:16:57 UTC
[dubbo] branch 3.0 updated: [3.0] Fix INIT rule being changed (#10119)
This is an automated email from the ASF dual-hosted git repository.
liujun 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 4689fefa96 [3.0] Fix INIT rule being changed (#10119)
4689fefa96 is described below
commit 4689fefa96ab75bb261ce33e0cd94402e54a9a71
Author: Albumen Kevin <jh...@gmail.com>
AuthorDate: Mon Jun 6 16:16:29 2022 +0800
[3.0] Fix INIT rule being changed (#10119)
---
.../client/migration/MigrationRuleListener.java | 4 ++--
.../client/migration/model/MigrationRule.java | 23 +++++++++++++++++++++-
.../client/migration/MigrationRuleHandlerTest.java | 5 +++--
.../migration/MigrationRuleListenerTest.java | 2 +-
4 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleListener.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleListener.java
index 25dd4add57..c7cbb0363c 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleListener.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleListener.java
@@ -215,9 +215,9 @@ public class MigrationRuleListener implements RegistryProtocolListener, Configur
}
private MigrationRule parseRule(String rawRule) {
- MigrationRule tmpRule = rule == null ? MigrationRule.INIT : rule;
+ MigrationRule tmpRule = rule == null ? MigrationRule.getInitRule() : rule;
if (INIT.equals(rawRule)) {
- tmpRule = MigrationRule.INIT;
+ tmpRule = MigrationRule.getInitRule();
} else {
try {
tmpRule = MigrationRule.parse(rawRule);
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 2c5dfea956..a3e50c3b6d 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
@@ -29,6 +29,7 @@ import org.yaml.snakeyaml.constructor.SafeConstructor;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
@@ -75,7 +76,6 @@ import static org.apache.dubbo.registry.client.migration.MigrationRuleHandler.DU
* step: FORCE_INTERFACE
*/
public class MigrationRule {
- public static final MigrationRule INIT = new MigrationRule();
private String key;
private MigrationStep step;
@@ -89,6 +89,10 @@ public class MigrationRule {
private transient Map<String, SubMigrationRule> interfaceRules;
private transient Map<String, SubMigrationRule> applicationRules;
+ public static MigrationRule getInitRule() {
+ return new MigrationRule();
+ }
+
@SuppressWarnings("unchecked")
private static MigrationRule parseFromMap(Map<String, Object> map) {
MigrationRule migrationRule = new MigrationRule();
@@ -387,4 +391,21 @@ public class MigrationRule {
Yaml yaml = new Yaml(constructor);
return yaml.dump(rule);
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ MigrationRule that = (MigrationRule) o;
+ return Objects.equals(key, that.key) && step == that.step && Objects.equals(threshold, that.threshold) && Objects.equals(proportion, that.proportion) && Objects.equals(delay, that.delay) && Objects.equals(force, that.force) && Objects.equals(interfaces, that.interfaces) && Objects.equals(applications, that.applications) && Objects.equals(interfaceRules, that.interfaceRules) && Objects.equals(applicationRules, that.applicationRules);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(key, step, threshold, proportion, delay, force, interfaces, applications, interfaceRules, applicationRules);
+ }
}
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandlerTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandlerTest.java
index 66aec89130..b5ae5dd8c1 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandlerTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandlerTest.java
@@ -38,8 +38,9 @@ public class MigrationRuleHandlerTest {
Mockito.when(invoker.migrateToForceApplicationInvoker(Mockito.any())).thenReturn(true);
Mockito.when(invoker.migrateToForceInterfaceInvoker(Mockito.any())).thenReturn(true);
- handler.doMigrate(MigrationRule.INIT);
- Mockito.verify(invoker, Mockito.times(1)).migrateToApplicationFirstInvoker(MigrationRule.INIT);
+ MigrationRule initRule = MigrationRule.getInitRule();
+ handler.doMigrate(initRule);
+ Mockito.verify(invoker, Mockito.times(1)).migrateToApplicationFirstInvoker(initRule);
MigrationRule rule = Mockito.mock(MigrationRule.class);
Mockito.when(rule.getStep(url)).thenReturn(MigrationStep.FORCE_APPLICATION);
diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleListenerTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleListenerTest.java
index be4b8ec1d8..72a0775fc1 100644
--- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleListenerTest.java
+++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/client/migration/MigrationRuleListenerTest.java
@@ -129,7 +129,7 @@ public class MigrationRuleListenerTest {
migrationRuleListener.getHandlers().put(migrationInvoker, handler);
migrationRuleListener.onRefer(null, migrationInvoker, consumerURL, null);
// check migration happened after invoker referred
- Mockito.verify(handler, Mockito.times(1)).doMigrate(MigrationRule.INIT);
+ Mockito.verify(handler, Mockito.times(1)).doMigrate(MigrationRule.getInitRule());
// check no delay tasks created for there's no local rule and no config center
Assertions.assertNull(migrationRuleListener.localRuleMigrationFuture);