xds: ignore zero-weighted locality

This commit is contained in:
ZHANG Dapeng 2019-07-08 15:21:52 -07:00 committed by GitHub
parent 722c66ef91
commit eecd5a72bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 2 deletions

View File

@ -251,9 +251,11 @@ final class XdsComms {
} }
int localityWeight = localityLbEndpoints.getLoadBalancingWeight().getValue(); int localityWeight = localityLbEndpoints.getLoadBalancingWeight().getValue();
if (localityWeight != 0) {
localityEndpointsMapping.put( localityEndpointsMapping.put(
locality, new LocalityInfo(lbEndPoints, localityWeight)); locality, new LocalityInfo(lbEndPoints, localityWeight));
} }
}
localityEndpointsMapping = Collections.unmodifiableMap(localityEndpointsMapping); localityEndpointsMapping = Collections.unmodifiableMap(localityEndpointsMapping);

View File

@ -256,6 +256,15 @@ public class XdsCommsTest {
.setAddress("addr22").setPortValue(22)))) .setAddress("addr22").setPortValue(22))))
.setLoadBalancingWeight(UInt32Value.of(22)) .setLoadBalancingWeight(UInt32Value.of(22))
.build(); .build();
Locality localityProto3 = Locality.newBuilder()
.setRegion("region3").setZone("zone3").setSubZone("subzone3").build();
LbEndpoint endpoint3 = LbEndpoint.newBuilder()
.setEndpoint(Endpoint.newBuilder()
.setAddress(Address.newBuilder()
.setSocketAddress(SocketAddress.newBuilder()
.setAddress("addr31").setPortValue(31))))
.setLoadBalancingWeight(UInt32Value.of(31))
.build();
DiscoveryResponse edsResponse = DiscoveryResponse.newBuilder() DiscoveryResponse edsResponse = DiscoveryResponse.newBuilder()
.addResources(Any.pack(ClusterLoadAssignment.newBuilder() .addResources(Any.pack(ClusterLoadAssignment.newBuilder()
.addEndpoints(LocalityLbEndpoints.newBuilder() .addEndpoints(LocalityLbEndpoints.newBuilder()
@ -268,6 +277,10 @@ public class XdsCommsTest {
.addLbEndpoints(endpoint21) .addLbEndpoints(endpoint21)
.addLbEndpoints(endpoint22) .addLbEndpoints(endpoint22)
.setLoadBalancingWeight(UInt32Value.of(2))) .setLoadBalancingWeight(UInt32Value.of(2)))
.addEndpoints(LocalityLbEndpoints.newBuilder()
.setLocality(localityProto3)
.addLbEndpoints(endpoint3)
.setLoadBalancingWeight(UInt32Value.of(0)))
.build())) .build()))
.setTypeUrl(EDS_TYPE_URL) .setTypeUrl(EDS_TYPE_URL)
.build(); .build();