diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java index 7d4eae353d..7588f74d2d 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java @@ -56,6 +56,11 @@ public class MigrationRuleHandler { } else { try { rule = MigrationRule.parse(rawRule); + // FIXME, consumerURL.getHost() might not exactly the ip expected. + if (rule.getTargetIps() == null || !rule.getTargetIps().contains(consumerURL.getHost())) { + logger.info("Migration rule ignored, rule target ips " + rule.getTargetIps() + " and local ip " + consumerURL.getHost() + " do not match"); + return; + } setMigrationRule(rule); step = rule.getStep(consumerURL.getServiceKey()); threshold = rule.getThreshold(consumerURL.getServiceKey()); 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 13dffc31b4..c727627374 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 @@ -41,6 +41,8 @@ public class MigrationRule { private String key; private MigrationStep step; private Float threshold; + // FIXME + private List targetIps; private List interfaces; private transient Map interfaceRules; @@ -100,6 +102,13 @@ public class MigrationRule { return interfaces; } + public List getTargetIps() { + return targetIps; + } + + public void setTargetIps(List targetIps) { + this.targetIps = targetIps; + } public void setInterfaces(List interfaces) { this.interfaces = interfaces;