Skip to content

Commit

Permalink
xds: ringhash policy in TRANSIENT_FAILURE should not attempt connecti…
Browse files Browse the repository at this point in the history
…ng when already in connecting (grpc#9535)
  • Loading branch information
YifeiZhuang committed Sep 12, 2022
1 parent d0848ef commit f702fd9
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 4 deletions.
2 changes: 1 addition & 1 deletion xds/src/main/java/io/grpc/xds/RingHashLoadBalancer.java
Expand Up @@ -248,7 +248,7 @@ private void updateBalancingState() {
overallState = READY;
} else if (numTransientFailure >= 2) {
overallState = TRANSIENT_FAILURE;
startConnectionAttempt = true;
startConnectionAttempt = (numConnecting == 0);
} else if (numConnecting > 0) {
overallState = CONNECTING;
} else if (numTransientFailure == 1 && subchannels.size() > 1) {
Expand Down
6 changes: 3 additions & 3 deletions xds/src/test/java/io/grpc/xds/RingHashLoadBalancerTest.java
Expand Up @@ -310,7 +310,7 @@ public void aggregateSubchannelStates_twoOrMoreSubchannelsInTransientFailure() {
ConnectivityStateInfo.forNonError(CONNECTING));
inOrder.verify(helper)
.updateBalancingState(eq(TRANSIENT_FAILURE), any(SubchannelPicker.class));
verifyConnection(1);
verifyConnection(0);

// three in TRANSIENT_FAILURE, one in CONNECTING
deliverSubchannelState(
Expand All @@ -320,7 +320,7 @@ public void aggregateSubchannelStates_twoOrMoreSubchannelsInTransientFailure() {
inOrder.verify(helper).refreshNameResolution();
inOrder.verify(helper)
.updateBalancingState(eq(TRANSIENT_FAILURE), any(SubchannelPicker.class));
verifyConnection(1);
verifyConnection(0);

// three in TRANSIENT_FAILURE, one in READY
deliverSubchannelState(
Expand Down Expand Up @@ -884,7 +884,7 @@ public void thirdSubchannelConnecting() {
deliverSubchannelState(subchannels.get(Collections.singletonList(servers.get(1))),
ConnectivityStateInfo.forNonError(CONNECTING));
verify(helper, times(2)).updateBalancingState(eq(TRANSIENT_FAILURE), pickerCaptor.capture());
verifyConnection(3);
verifyConnection(2);

// Picking subchannel triggers connection.
PickSubchannelArgs args = new PickSubchannelArgsImpl(
Expand Down

0 comments on commit f702fd9

Please sign in to comment.