Skip to content

Commit 9d191b3

Browse files
committed
xds: Check isHttp11ProxyAvailable in equals()
This fixes an equals/hashCode bug introduced in 1219706. Discovered when investigating b/430347751
1 parent 01bd63d commit 9d191b3

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

xds/src/main/java/io/grpc/xds/ClusterResolverLoadBalancerProvider.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ boolean isHttp11ProxyAvailable() {
8989

9090
@Override
9191
public int hashCode() {
92-
return Objects.hash(discoveryMechanisms, lbConfig);
92+
return Objects.hash(discoveryMechanisms, lbConfig, isHttp11ProxyAvailable);
9393
}
9494

9595
@Override
@@ -102,14 +102,16 @@ public boolean equals(Object o) {
102102
}
103103
ClusterResolverConfig that = (ClusterResolverConfig) o;
104104
return discoveryMechanisms.equals(that.discoveryMechanisms)
105-
&& lbConfig.equals(that.lbConfig);
105+
&& lbConfig.equals(that.lbConfig)
106+
&& isHttp11ProxyAvailable == that.isHttp11ProxyAvailable;
106107
}
107108

108109
@Override
109110
public String toString() {
110111
return MoreObjects.toStringHelper(this)
111112
.add("discoveryMechanisms", discoveryMechanisms)
112113
.add("lbConfig", lbConfig)
114+
.add("isHttp11ProxyAvailable", isHttp11ProxyAvailable)
113115
.toString();
114116
}
115117

xds/src/test/java/io/grpc/xds/ClusterResolverLoadBalancerTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
import com.google.common.collect.ImmutableMap;
3434
import com.google.common.collect.Iterables;
35+
import com.google.common.testing.EqualsTester;
3536
import io.grpc.Attributes;
3637
import io.grpc.ChannelLogger;
3738
import io.grpc.ConnectivityState;
@@ -1199,6 +1200,27 @@ public void handleNameResolutionErrorFromUpstream_afterChildLbCreated_fallThroug
11991200
any(ConnectivityState.class), any(SubchannelPicker.class));
12001201
}
12011202

1203+
@Test
1204+
public void config_equalsTester() {
1205+
new EqualsTester()
1206+
.addEqualityGroup(
1207+
new ClusterResolverConfig(
1208+
Collections.singletonList(edsDiscoveryMechanism1), leastRequest, false),
1209+
new ClusterResolverConfig(
1210+
Collections.singletonList(edsDiscoveryMechanism1), leastRequest, false))
1211+
.addEqualityGroup(new ClusterResolverConfig(
1212+
Collections.singletonList(edsDiscoveryMechanism1), roundRobin, false))
1213+
.addEqualityGroup(new ClusterResolverConfig(
1214+
Collections.singletonList(edsDiscoveryMechanism1), leastRequest, true))
1215+
.addEqualityGroup(new ClusterResolverConfig(
1216+
Collections.singletonList(edsDiscoveryMechanismWithOutlierDetection),
1217+
leastRequest,
1218+
false))
1219+
.addEqualityGroup(new ClusterResolverConfig(
1220+
Arrays.asList(edsDiscoveryMechanism1, edsDiscoveryMechanism2), leastRequest, false))
1221+
.testEquals();
1222+
}
1223+
12021224
private void deliverLbConfig(ClusterResolverConfig config) {
12031225
loadBalancer.acceptResolvedAddresses(
12041226
ResolvedAddresses.newBuilder()

0 commit comments

Comments
 (0)