core: In PF, remove useless requestConnection for CONNECTING subchannel

It doesn't do anything.

Call scheduleNextConnection() unconditionally since it is responsible
for checking if `enableHappyEyeballs == true`. It's also surprising to
check in the CONNECTING case but not the IDLE case.
This commit is contained in:
Eric Anderson 2024-08-17 10:50:06 -07:00
parent 2c93791c98
commit 82a8d57396
2 changed files with 4 additions and 17 deletions

View File

@ -385,11 +385,7 @@ final class PickFirstLeafLoadBalancer extends LoadBalancer {
scheduleNextConnection(); scheduleNextConnection();
break; break;
case CONNECTING: case CONNECTING:
if (enableHappyEyeballs) { scheduleNextConnection();
scheduleNextConnection();
} else {
subchannelData.subchannel.requestConnection();
}
break; break;
case TRANSIENT_FAILURE: case TRANSIENT_FAILURE:
addressIndex.increment(); addressIndex.increment();

View File

@ -361,11 +361,7 @@ public class PickFirstLeafLoadBalancerTest {
// Second acceptResolvedAddresses shouldn't do anything // Second acceptResolvedAddresses shouldn't do anything
loadBalancer.acceptResolvedAddresses( loadBalancer.acceptResolvedAddresses(
ResolvedAddresses.newBuilder().setAddresses(servers).setAttributes(affinity).build()); ResolvedAddresses.newBuilder().setAddresses(servers).setAttributes(affinity).build());
if (enableHappyEyeballs) { inOrder.verify(mockSubchannel1, never()).requestConnection();
inOrder.verify(mockSubchannel1, never()).requestConnection();
} else {
inOrder.verify(mockSubchannel1, times(1)).requestConnection();
}
inOrder.verify(mockHelper, never()).updateBalancingState(any(), any()); inOrder.verify(mockHelper, never()).updateBalancingState(any(), any());
} }
@ -862,8 +858,7 @@ public class PickFirstLeafLoadBalancerTest {
loadBalancer.requestConnection(); loadBalancer.requestConnection();
inOrder.verify(mockSubchannel2).start(stateListenerCaptor.capture()); inOrder.verify(mockSubchannel2).start(stateListenerCaptor.capture());
SubchannelStateListener stateListener2 = stateListenerCaptor.getValue(); SubchannelStateListener stateListener2 = stateListenerCaptor.getValue();
int expectedRequests = enableHappyEyeballs ? 1 : 2; inOrder.verify(mockSubchannel2).requestConnection();
inOrder.verify(mockSubchannel2, times(expectedRequests)).requestConnection();
stateListener2.onSubchannelState(ConnectivityStateInfo.forNonError(CONNECTING)); stateListener2.onSubchannelState(ConnectivityStateInfo.forNonError(CONNECTING));
@ -871,11 +866,7 @@ public class PickFirstLeafLoadBalancerTest {
loadBalancer.requestConnection(); loadBalancer.requestConnection();
inOrder.verify(mockHelper, never()).updateBalancingState(any(), any()); inOrder.verify(mockHelper, never()).updateBalancingState(any(), any());
inOrder.verify(mockSubchannel1, never()).requestConnection(); inOrder.verify(mockSubchannel1, never()).requestConnection();
if (enableHappyEyeballs) { inOrder.verify(mockSubchannel2, never()).requestConnection();
inOrder.verify(mockSubchannel2, never()).requestConnection();
} else {
inOrder.verify(mockSubchannel2).requestConnection();
}
} }
@Test @Test