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;