mirror of https://github.com/grpc/grpc-java.git
xds: ringhash policy in TRANSIENT_FAILURE should not attempt connecting when already in connecting (#9535)
This commit is contained in:
parent
84d0b0474f
commit
42e68149a5
|
@ -248,7 +248,7 @@ final class RingHashLoadBalancer extends LoadBalancer {
|
||||||
overallState = READY;
|
overallState = READY;
|
||||||
} else if (numTransientFailure >= 2) {
|
} else if (numTransientFailure >= 2) {
|
||||||
overallState = TRANSIENT_FAILURE;
|
overallState = TRANSIENT_FAILURE;
|
||||||
startConnectionAttempt = true;
|
startConnectionAttempt = (numConnecting == 0);
|
||||||
} else if (numConnecting > 0) {
|
} else if (numConnecting > 0) {
|
||||||
overallState = CONNECTING;
|
overallState = CONNECTING;
|
||||||
} else if (numTransientFailure == 1 && subchannels.size() > 1) {
|
} else if (numTransientFailure == 1 && subchannels.size() > 1) {
|
||||||
|
|
|
@ -310,7 +310,7 @@ public class RingHashLoadBalancerTest {
|
||||||
ConnectivityStateInfo.forNonError(CONNECTING));
|
ConnectivityStateInfo.forNonError(CONNECTING));
|
||||||
inOrder.verify(helper)
|
inOrder.verify(helper)
|
||||||
.updateBalancingState(eq(TRANSIENT_FAILURE), any(SubchannelPicker.class));
|
.updateBalancingState(eq(TRANSIENT_FAILURE), any(SubchannelPicker.class));
|
||||||
verifyConnection(1);
|
verifyConnection(0);
|
||||||
|
|
||||||
// three in TRANSIENT_FAILURE, one in CONNECTING
|
// three in TRANSIENT_FAILURE, one in CONNECTING
|
||||||
deliverSubchannelState(
|
deliverSubchannelState(
|
||||||
|
@ -320,7 +320,7 @@ public class RingHashLoadBalancerTest {
|
||||||
inOrder.verify(helper).refreshNameResolution();
|
inOrder.verify(helper).refreshNameResolution();
|
||||||
inOrder.verify(helper)
|
inOrder.verify(helper)
|
||||||
.updateBalancingState(eq(TRANSIENT_FAILURE), any(SubchannelPicker.class));
|
.updateBalancingState(eq(TRANSIENT_FAILURE), any(SubchannelPicker.class));
|
||||||
verifyConnection(1);
|
verifyConnection(0);
|
||||||
|
|
||||||
// three in TRANSIENT_FAILURE, one in READY
|
// three in TRANSIENT_FAILURE, one in READY
|
||||||
deliverSubchannelState(
|
deliverSubchannelState(
|
||||||
|
@ -884,7 +884,7 @@ public class RingHashLoadBalancerTest {
|
||||||
deliverSubchannelState(subchannels.get(Collections.singletonList(servers.get(1))),
|
deliverSubchannelState(subchannels.get(Collections.singletonList(servers.get(1))),
|
||||||
ConnectivityStateInfo.forNonError(CONNECTING));
|
ConnectivityStateInfo.forNonError(CONNECTING));
|
||||||
verify(helper, times(2)).updateBalancingState(eq(TRANSIENT_FAILURE), pickerCaptor.capture());
|
verify(helper, times(2)).updateBalancingState(eq(TRANSIENT_FAILURE), pickerCaptor.capture());
|
||||||
verifyConnection(3);
|
verifyConnection(2);
|
||||||
|
|
||||||
// Picking subchannel triggers connection.
|
// Picking subchannel triggers connection.
|
||||||
PickSubchannelArgs args = new PickSubchannelArgsImpl(
|
PickSubchannelArgs args = new PickSubchannelArgsImpl(
|
||||||
|
|
Loading…
Reference in New Issue