@@ -133,6 +133,7 @@ final class CachingRlsLbClient {
133133 private final RefCountedChildPolicyWrapperFactory refCountedChildPolicyWrapperFactory ;
134134 private final ChannelLogger logger ;
135135 private final ChildPolicyWrapper fallbackChildPolicyWrapper ;
136+ private ConnectivityState lastRlsServerConnectivityState ;
136137
137138 static {
138139 MetricInstrumentRegistry metricInstrumentRegistry
@@ -216,6 +217,8 @@ private CachingRlsLbClient(Builder builder) {
216217 rlsChannelBuilder .disableServiceConfigLookUp ();
217218 }
218219 rlsChannel = rlsChannelBuilder .build ();
220+ lastRlsServerConnectivityState = rlsChannel .getState (false );
221+ rlsChannel .notifyWhenStateChanged (lastRlsServerConnectivityState , () -> rlsServerConnectionStateChanged ());
219222 rlsStub = RouteLookupServiceGrpc .newStub (rlsChannel );
220223 childLbResolvedAddressFactory =
221224 checkNotNull (builder .resolvedAddressFactory , "resolvedAddressFactory" );
@@ -257,6 +260,15 @@ public void accept(BatchRecorder recorder) {
257260 logger .log (ChannelLogLevel .DEBUG , "CachingRlsLbClient created" );
258261 }
259262
263+ private void rlsServerConnectionStateChanged () {
264+ ConnectivityState currentState = rlsChannel .getState (false );
265+ if (lastRlsServerConnectivityState == ConnectivityState .TRANSIENT_FAILURE
266+ && currentState == ConnectivityState .READY ) {
267+
268+ }
269+ lastRlsServerConnectivityState = currentState ;
270+ }
271+
260272 void init () {
261273 synchronized (lock ) {
262274 refCountedChildPolicyWrapperFactory .init ();
0 commit comments