Skip to content

Commit db0b283

Browse files
committed
Don't create fallback policy if default target is null.
1 parent a60c797 commit db0b283

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

rls/src/main/java/io/grpc/rls/CachingRlsLbClient.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,12 @@ private CachingRlsLbClient(Builder builder) {
229229
new BackoffRefreshListener());
230230
// TODO(creamsoup) wait until lb is ready
231231
String defaultTarget = lbPolicyConfig.getRouteLookupConfig().defaultTarget();
232-
logger.log(ChannelLogLevel.DEBUG, "starting fallback to {0}", defaultTarget);
233-
fallbackChildPolicyWrapper = refCountedChildPolicyWrapperFactory.createOrGet(defaultTarget);
232+
if (defaultTarget != null && !defaultTarget.isEmpty()) {
233+
logger.log(ChannelLogLevel.DEBUG, "starting fallback to {0}", defaultTarget);
234+
fallbackChildPolicyWrapper = refCountedChildPolicyWrapperFactory.createOrGet(defaultTarget);
235+
} else {
236+
fallbackChildPolicyWrapper = null;
237+
}
234238

235239
gaugeRegistration = helper.getMetricRecorder()
236240
.registerBatchCallback(new BatchCallback() {

rls/src/test/java/io/grpc/rls/RlsLoadBalancerTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ public void lb_working_withDefaultTarget_rlsResponding() throws Exception {
257257
inOrder.verifyNoMoreInteractions();
258258

259259
assertThat(res.getStatus().isOk()).isTrue();
260-
assertThat(subchannels).hasSize(1);
260+
assertThat(subchannels).hasSize(2); // includes fallback sub-channel
261261
FakeSubchannel searchSubchannel = subchannels.getLast();
262262
assertThat(subchannelIsReady(searchSubchannel)).isFalse();
263263

@@ -277,7 +277,7 @@ public void lb_working_withDefaultTarget_rlsResponding() throws Exception {
277277
// other rls picker itself is ready due to first channel.
278278
assertThat(res.getStatus().isOk()).isTrue();
279279
assertThat(subchannelIsReady(res.getSubchannel())).isFalse();
280-
assertThat(subchannels).hasSize(2);
280+
assertThat(subchannels).hasSize(3); // includes fallback sub-channel
281281
FakeSubchannel rescueSubchannel = subchannels.getLast();
282282

283283
// search subchannel is down, rescue subchannel is connecting
@@ -545,7 +545,7 @@ public void lb_nameResolutionFailed() throws Exception {
545545
assertThat(subchannelIsReady(res.getSubchannel())).isFalse();
546546

547547
inOrder.verify(helper).createSubchannel(any(CreateSubchannelArgs.class));
548-
assertThat(subchannels).hasSize(1);
548+
assertThat(subchannels).hasSize(1); // includes fallback sub-channel
549549

550550
FakeSubchannel searchSubchannel = subchannels.getLast();
551551
searchSubchannel.updateState(ConnectivityStateInfo.forNonError(ConnectivityState.READY));

0 commit comments

Comments
 (0)