Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions rls/src/main/java/io/grpc/rls/LbPolicyConfiguration.java
Original file line number Diff line number Diff line change
Expand Up @@ -302,8 +302,10 @@ public ChildPolicyWrapper(
new Runnable() {
@Override
public void run() {
lb.handleResolvedAddresses(
childLbResolvedAddressFactory.create(lbConfig.getConfig()));
if (!lb.acceptResolvedAddresses(
childLbResolvedAddressFactory.create(lbConfig.getConfig()))) {
helper.refreshNameResolution();
}
lb.requestConnection();
}
});
Expand Down
10 changes: 9 additions & 1 deletion rls/src/test/java/io/grpc/rls/LbPolicyConfigurationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ public class LbPolicyConfigurationTest {

private final Helper helper = mock(Helper.class);
private final LoadBalancerProvider lbProvider = mock(LoadBalancerProvider.class);
private final LoadBalancer lb = mock(LoadBalancer.class);
private final SubchannelStateManager subchannelStateManager = new SubchannelStateManagerImpl();
private final SubchannelPicker picker = mock(SubchannelPicker.class);
private final ChildLbStatusListener childLbStatusListener = mock(ChildLbStatusListener.class);
Expand Down Expand Up @@ -91,7 +92,7 @@ public void uncaughtException(Thread t, Throwable e) {
}
}))
.when(helper).getSynchronizationContext();
doReturn(mock(LoadBalancer.class)).when(lbProvider).newLoadBalancer(any(Helper.class));
doReturn(lb).when(lbProvider).newLoadBalancer(any(Helper.class));
doReturn(ConfigOrError.fromConfig(new Object()))
.when(lbProvider).parseLoadBalancingPolicyConfig(ArgumentMatchers.<Map<String, ?>>any());
}
Expand Down Expand Up @@ -120,6 +121,13 @@ public void childPolicyWrapper_refCounted() {
}
}

@Test
public void childPolicyWrapper_addressesRejected() {
when(lb.acceptResolvedAddresses(any(ResolvedAddresses.class))).thenReturn(false);
factory.createOrGet("target");
verify(helper).refreshNameResolution();
}

@Test
public void childLoadBalancingPolicy_effectiveChildPolicy() {
LoadBalancerProvider mockProvider = mock(LoadBalancerProvider.class);
Expand Down