You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2018/07/16 06:25:41 UTC

[incubator-servicecomb-java-chassis] 11/11: [SCB-706]improve match to avoid many iterations

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit 6c4c1c1e9adc8e99fcc57cc4165576dc9655c4d9
Author: liubao <ba...@huawei.com>
AuthorDate: Fri Jul 13 17:47:13 2018 +0800

    [SCB-706]improve match to avoid many iterations
---
 .../servicecomb/loadbalance/filter/ZoneAwareDiscoveryFilter.java  | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/ZoneAwareDiscoveryFilter.java b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/ZoneAwareDiscoveryFilter.java
index 0d81846..3798519 100644
--- a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/ZoneAwareDiscoveryFilter.java
+++ b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/ZoneAwareDiscoveryFilter.java
@@ -105,7 +105,11 @@ public class ZoneAwareDiscoveryFilter extends AbstractDiscoveryFilter {
   }
 
   private boolean regionAndAZMatch(MicroserviceInstance myself, MicroserviceInstance target) {
-    if (myself.getDataCenterInfo() != null && target.getDataCenterInfo() != null) {
+    if (myself.getDataCenterInfo() == null) {
+      // when instance have no datacenter info, it will match all other datacenters
+      return true;
+    }
+    if (target.getDataCenterInfo() != null) {
       return myself.getDataCenterInfo().getRegion().equals(target.getDataCenterInfo().getRegion()) &&
           myself.getDataCenterInfo().getAvailableZone().equals(target.getDataCenterInfo().getAvailableZone());
     }
@@ -113,7 +117,7 @@ public class ZoneAwareDiscoveryFilter extends AbstractDiscoveryFilter {
   }
 
   private boolean regionMatch(MicroserviceInstance myself, MicroserviceInstance target) {
-    if (myself.getDataCenterInfo() != null && target.getDataCenterInfo() != null) {
+    if (target.getDataCenterInfo() != null) {
       return myself.getDataCenterInfo().getRegion().equals(target.getDataCenterInfo().getRegion());
     }
     return false;