Skip to content

Commit 233b415

Browse files
committed
in-progress changes.
1 parent 1f33b33 commit 233b415

File tree

2 files changed

+11
-19
lines changed

2 files changed

+11
-19
lines changed

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

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ final class CachingRlsLbClient {
132132
@GuardedBy("lock")
133133
private final RefCountedChildPolicyWrapperFactory refCountedChildPolicyWrapperFactory;
134134
private final ChannelLogger logger;
135+
private final ChildPolicyWrapper fallbackChildPolicyWrapper;
135136

136137
static {
137138
MetricInstrumentRegistry metricInstrumentRegistry
@@ -226,6 +227,10 @@ private CachingRlsLbClient(Builder builder) {
226227
lbPolicyConfig.getLoadBalancingPolicy(), childLbResolvedAddressFactory,
227228
childLbHelperProvider,
228229
new BackoffRefreshListener());
230+
// TODO(creamsoup) wait until lb is ready
231+
String defaultTarget = lbPolicyConfig.getRouteLookupConfig().defaultTarget();
232+
logger.log(ChannelLogLevel.DEBUG, "starting fallback to {0}", defaultTarget);
233+
fallbackChildPolicyWrapper = refCountedChildPolicyWrapperFactory.createOrGet(defaultTarget);
229234

230235
gaugeRegistration = helper.getMetricRecorder()
231236
.registerBatchCallback(new BatchCallback() {
@@ -1015,12 +1020,8 @@ public PickResult pickSubchannel(PickSubchannelArgs args) {
10151020
}
10161021
}
10171022

1018-
private ChildPolicyWrapper fallbackChildPolicyWrapper;
1019-
10201023
/** Uses Subchannel connected to default target. */
10211024
private PickResult useFallback(PickSubchannelArgs args) {
1022-
// TODO(creamsoup) wait until lb is ready
1023-
startFallbackChildPolicy();
10241025
SubchannelPicker picker = fallbackChildPolicyWrapper.getPicker();
10251026
if (picker == null) {
10261027
return PickResult.withNoResult();
@@ -1045,17 +1046,6 @@ private String determineMetricsPickResult(PickResult pickResult) {
10451046
}
10461047
}
10471048

1048-
private void startFallbackChildPolicy() {
1049-
String defaultTarget = lbPolicyConfig.getRouteLookupConfig().defaultTarget();
1050-
synchronized (lock) {
1051-
if (fallbackChildPolicyWrapper != null) {
1052-
return;
1053-
}
1054-
logger.log(ChannelLogLevel.DEBUG, "starting fallback to {0}", defaultTarget);
1055-
fallbackChildPolicyWrapper = refCountedChildPolicyWrapperFactory.createOrGet(defaultTarget);
1056-
}
1057-
}
1058-
10591049
// GuardedBy CachingRlsLbClient.lock
10601050
void close() {
10611051
synchronized (lock) { // Lock is already held, but ErrorProne can't tell

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -372,12 +372,14 @@ public void get_updatesLbState() throws Exception {
372372
ArgumentCaptor<SubchannelPicker> pickerCaptor = ArgumentCaptor.forClass(SubchannelPicker.class);
373373
ArgumentCaptor<ConnectivityState> stateCaptor =
374374
ArgumentCaptor.forClass(ConnectivityState.class);
375-
inOrder.verify(helper, times(2))
375+
inOrder.verify(helper, times(3))
376376
.updateBalancingState(stateCaptor.capture(), pickerCaptor.capture());
377377

378378
assertThat(new HashSet<>(pickerCaptor.getAllValues())).hasSize(1);
379+
// TRANSIENT_FAILURE is because the test setup pretends fallback is not available.
379380
assertThat(stateCaptor.getAllValues())
380-
.containsExactly(ConnectivityState.CONNECTING, ConnectivityState.READY);
381+
.containsExactly(ConnectivityState.TRANSIENT_FAILURE, ConnectivityState.CONNECTING,
382+
ConnectivityState.READY);
381383
Metadata headers = new Metadata();
382384
PickResult pickResult = getPickResultForCreate(pickerCaptor, headers);
383385
assertThat(pickResult.getStatus().isOk()).isTrue();
@@ -439,7 +441,7 @@ public void timeout_not_changing_picked_subchannel() throws Exception {
439441
ArgumentCaptor<SubchannelPicker> pickerCaptor = ArgumentCaptor.forClass(SubchannelPicker.class);
440442
ArgumentCaptor<ConnectivityState> stateCaptor =
441443
ArgumentCaptor.forClass(ConnectivityState.class);
442-
verify(helper, times(4)).updateBalancingState(stateCaptor.capture(), pickerCaptor.capture());
444+
verify(helper, times(5)).updateBalancingState(stateCaptor.capture(), pickerCaptor.capture());
443445

444446
Metadata headers = new Metadata();
445447
PickResult pickResult = getPickResultForCreate(pickerCaptor, headers);
@@ -509,7 +511,7 @@ public void get_withAdaptiveThrottler() throws Exception {
509511
ArgumentCaptor<SubchannelPicker> pickerCaptor = ArgumentCaptor.forClass(SubchannelPicker.class);
510512
ArgumentCaptor<ConnectivityState> stateCaptor =
511513
ArgumentCaptor.forClass(ConnectivityState.class);
512-
inOrder.verify(helper, times(2))
514+
inOrder.verify(helper, times(3))
513515
.updateBalancingState(stateCaptor.capture(), pickerCaptor.capture());
514516

515517
Metadata headers = new Metadata();

0 commit comments

Comments
 (0)