@@ -1028,8 +1028,7 @@ public PickResult pickSubchannel(PickSubchannelArgs args) {
10281028 SubchannelPicker picker =
10291029 (childPolicyWrapper != null ) ? childPolicyWrapper .getPicker () : null ;
10301030 if (picker == null ) {
1031- // Category F (Pass-Through container): Preserve leaf "connecting" delay type while
1032- // recording RLS child policy context.
1031+ // Child policy is connecting. Preserve leaf delay type.
10331032 return PickResult .withNoResult (
10341033 "connecting" , "RLS child policy connecting" );
10351034 }
@@ -1040,6 +1039,11 @@ public PickResult pickSubchannel(PickSubchannelArgs args) {
10401039 Arrays .asList (helper .getChannelTarget (), lookupService ,
10411040 childPolicyWrapper .getTarget (), determineMetricsPickResult (pickResult )),
10421041 Arrays .asList (determineCustomLabel (args )));
1042+ } else if (pickResult .getDelayType () != null ) {
1043+ return PickResult .withNoResult (
1044+ pickResult .getDelayType (),
1045+ "RLS child (" + childPolicyWrapper .getTarget () + ") delayed: "
1046+ + pickResult .getDelayReason ());
10431047 }
10441048 return pickResult ;
10451049 } else if (response .hasError ()) {
@@ -1053,8 +1057,7 @@ public PickResult pickSubchannel(PickSubchannelArgs args) {
10531057 convertRlsServerStatus (response .getStatus (),
10541058 lbPolicyConfig .getRouteLookupConfig ().lookupService ()));
10551059 } else {
1056- // Category B (Control-Plane scenario): RPC is blocked executing an RLS control-plane
1057- // query. Report canonical "rls_lookup_pending" type and target server address.
1060+ // RLS control-plane query is pending.
10581061 return PickResult .withNoResult (
10591062 "rls_lookup_pending" ,
10601063 "Route Lookup Service query pending on " + lookupService );
@@ -1074,6 +1077,11 @@ private PickResult useFallback(PickSubchannelArgs args) {
10741077 Arrays .asList (helper .getChannelTarget (), lookupService ,
10751078 fallbackChildPolicyWrapper .getTarget (), determineMetricsPickResult (pickResult )),
10761079 Arrays .asList (determineCustomLabel (args )));
1080+ } else if (pickResult .getDelayType () != null ) {
1081+ return PickResult .withNoResult (
1082+ pickResult .getDelayType (),
1083+ "RLS fallback (" + fallbackChildPolicyWrapper .getTarget () + ") delayed: "
1084+ + pickResult .getDelayReason ());
10771085 }
10781086 return pickResult ;
10791087 }
0 commit comments