xds: Check isHttp11ProxyAvailable in equals()

This fixes an equals/hashCode bug introduced in 12197065fe.

Discovered when investigating b/430347751
This commit is contained in:
Eric Anderson 2025-07-11 16:28:47 -07:00
parent 01bd63d88f
commit 9d191b31b5
2 changed files with 26 additions and 2 deletions

View File

@ -89,7 +89,7 @@ public final class ClusterResolverLoadBalancerProvider extends LoadBalancerProvi
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(discoveryMechanisms, lbConfig); return Objects.hash(discoveryMechanisms, lbConfig, isHttp11ProxyAvailable);
} }
@Override @Override
@ -102,7 +102,8 @@ public final class ClusterResolverLoadBalancerProvider extends LoadBalancerProvi
} }
ClusterResolverConfig that = (ClusterResolverConfig) o; ClusterResolverConfig that = (ClusterResolverConfig) o;
return discoveryMechanisms.equals(that.discoveryMechanisms) return discoveryMechanisms.equals(that.discoveryMechanisms)
&& lbConfig.equals(that.lbConfig); && lbConfig.equals(that.lbConfig)
&& isHttp11ProxyAvailable == that.isHttp11ProxyAvailable;
} }
@Override @Override
@ -110,6 +111,7 @@ public final class ClusterResolverLoadBalancerProvider extends LoadBalancerProvi
return MoreObjects.toStringHelper(this) return MoreObjects.toStringHelper(this)
.add("discoveryMechanisms", discoveryMechanisms) .add("discoveryMechanisms", discoveryMechanisms)
.add("lbConfig", lbConfig) .add("lbConfig", lbConfig)
.add("isHttp11ProxyAvailable", isHttp11ProxyAvailable)
.toString(); .toString();
} }

View File

@ -32,6 +32,7 @@ import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.testing.EqualsTester;
import io.grpc.Attributes; import io.grpc.Attributes;
import io.grpc.ChannelLogger; import io.grpc.ChannelLogger;
import io.grpc.ConnectivityState; import io.grpc.ConnectivityState;
@ -1199,6 +1200,27 @@ public class ClusterResolverLoadBalancerTest {
any(ConnectivityState.class), any(SubchannelPicker.class)); any(ConnectivityState.class), any(SubchannelPicker.class));
} }
@Test
public void config_equalsTester() {
new EqualsTester()
.addEqualityGroup(
new ClusterResolverConfig(
Collections.singletonList(edsDiscoveryMechanism1), leastRequest, false),
new ClusterResolverConfig(
Collections.singletonList(edsDiscoveryMechanism1), leastRequest, false))
.addEqualityGroup(new ClusterResolverConfig(
Collections.singletonList(edsDiscoveryMechanism1), roundRobin, false))
.addEqualityGroup(new ClusterResolverConfig(
Collections.singletonList(edsDiscoveryMechanism1), leastRequest, true))
.addEqualityGroup(new ClusterResolverConfig(
Collections.singletonList(edsDiscoveryMechanismWithOutlierDetection),
leastRequest,
false))
.addEqualityGroup(new ClusterResolverConfig(
Arrays.asList(edsDiscoveryMechanism1, edsDiscoveryMechanism2), leastRequest, false))
.testEquals();
}
private void deliverLbConfig(ClusterResolverConfig config) { private void deliverLbConfig(ClusterResolverConfig config) {
loadBalancer.acceptResolvedAddresses( loadBalancer.acceptResolvedAddresses(
ResolvedAddresses.newBuilder() ResolvedAddresses.newBuilder()