Skip to content

Commit b5989a5

Browse files
committed
util: MultiChildLb children should always start with a NoResult picker
That's the obvious default, and all current usages use (something equivalent to) that default.
1 parent a6f8ebf commit b5989a5

File tree

6 files changed

+21
-34
lines changed

6 files changed

+21
-34
lines changed

util/src/main/java/io/grpc/util/MultiChildLoadBalancer.java

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,7 @@ protected Map<Object, ChildLbState> createChildLbMap(ResolvedAddresses resolvedA
9191
if (existingChildLbState != null) {
9292
childLbMap.put(endpoint, existingChildLbState);
9393
} else {
94-
childLbMap.put(endpoint,
95-
createChildLbState(endpoint, null, getInitialPicker(), resolvedAddresses));
94+
childLbMap.put(endpoint, createChildLbState(endpoint, null, resolvedAddresses));
9695
}
9796
}
9897
return childLbMap;
@@ -102,8 +101,8 @@ protected Map<Object, ChildLbState> createChildLbMap(ResolvedAddresses resolvedA
102101
* Override to create an instance of a subclass.
103102
*/
104103
protected ChildLbState createChildLbState(Object key, Object policyConfig,
105-
SubchannelPicker initialPicker, ResolvedAddresses resolvedAddresses) {
106-
return new ChildLbState(key, pickFirstLbProvider, policyConfig, initialPicker);
104+
ResolvedAddresses resolvedAddresses) {
105+
return new ChildLbState(key, pickFirstLbProvider, policyConfig);
107106
}
108107

109108
/**
@@ -187,15 +186,6 @@ protected void handleNameResolutionError(ChildLbState child, Status error) {
187186
child.lb.handleNameResolutionError(error);
188187
}
189188

190-
/**
191-
* Creates a picker representing the state before any connections have been established.
192-
*
193-
* <p/>Override to produce a custom picker.
194-
*/
195-
protected SubchannelPicker getInitialPicker() {
196-
return new FixedResultPicker(PickResult.withNoResult());
197-
}
198-
199189
/**
200190
* Creates a new picker representing an error status.
201191
*
@@ -365,12 +355,10 @@ public class ChildLbState {
365355

366356
private final LoadBalancer lb;
367357
private ConnectivityState currentState;
368-
private SubchannelPicker currentPicker;
358+
private SubchannelPicker currentPicker = new FixedResultPicker(PickResult.withNoResult());
369359

370-
public ChildLbState(Object key, LoadBalancer.Factory policyFactory, Object childConfig,
371-
SubchannelPicker initialPicker) {
360+
public ChildLbState(Object key, LoadBalancer.Factory policyFactory, Object childConfig) {
372361
this.key = key;
373-
this.currentPicker = initialPicker;
374362
this.config = childConfig;
375363
this.lb = policyFactory.newLoadBalancer(createChildHelper());
376364
this.currentState = CONNECTING;

util/src/main/java/io/grpc/util/RoundRobinLoadBalancer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ private SubchannelPicker createReadyPicker(Collection<ChildLbState> children) {
9797

9898
@Override
9999
protected ChildLbState createChildLbState(Object key, Object policyConfig,
100-
SubchannelPicker initialPicker, ResolvedAddresses resolvedAddresses) {
101-
return new ChildLbState(key, pickFirstLbProvider, policyConfig, initialPicker) {
100+
ResolvedAddresses resolvedAddresses) {
101+
return new ChildLbState(key, pickFirstLbProvider, policyConfig) {
102102
@Override
103103
protected ChildLbStateHelper createChildHelper() {
104104
return new ChildLbStateHelper() {

xds/src/main/java/io/grpc/xds/ClusterManagerLoadBalancer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ protected Map<Object, ChildLbState> createChildLbMap(ResolvedAddresses resolvedA
8585
ChildLbState child = getChildLbState(entry.getKey());
8686
if (child == null) {
8787
child = new ClusterManagerLbState(entry.getKey(),
88-
entry.getValue().getProvider(), entry.getValue().getConfig(), getInitialPicker());
88+
entry.getValue().getProvider(), entry.getValue().getConfig());
8989
}
9090
newChildPolicies.put(entry.getKey(), child);
9191
}
@@ -202,8 +202,8 @@ private class ClusterManagerLbState extends ChildLbState {
202202
ScheduledHandle deletionTimer;
203203

204204
public ClusterManagerLbState(Object key, LoadBalancerProvider policyProvider,
205-
Object childConfig, SubchannelPicker initialPicker) {
206-
super(key, policyProvider, childConfig, initialPicker);
205+
Object childConfig) {
206+
super(key, policyProvider, childConfig);
207207
}
208208

209209
@Override

xds/src/main/java/io/grpc/xds/LeastRequestLoadBalancer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ protected void updateOverallBalancingState() {
127127

128128
@Override
129129
protected ChildLbState createChildLbState(Object key, Object policyConfig,
130-
SubchannelPicker initialPicker, ResolvedAddresses unused) {
131-
return new LeastRequestLbState(key, pickFirstLbProvider, policyConfig, initialPicker);
130+
ResolvedAddresses unused) {
131+
return new LeastRequestLbState(key, pickFirstLbProvider, policyConfig);
132132
}
133133

134134
private void updateBalancingState(ConnectivityState state, SubchannelPicker picker) {
@@ -321,8 +321,8 @@ protected class LeastRequestLbState extends ChildLbState {
321321
private final AtomicInteger activeRequests = new AtomicInteger(0);
322322

323323
public LeastRequestLbState(Object key, LoadBalancerProvider policyProvider,
324-
Object childConfig, SubchannelPicker initialPicker) {
325-
super(key, policyProvider, childConfig, initialPicker);
324+
Object childConfig) {
325+
super(key, policyProvider, childConfig);
326326
}
327327

328328
int getActiveRequests() {

xds/src/main/java/io/grpc/xds/RingHashLoadBalancer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,8 @@ protected void updateOverallBalancingState() {
228228

229229
@Override
230230
protected ChildLbState createChildLbState(Object key, Object policyConfig,
231-
SubchannelPicker initialPicker, ResolvedAddresses resolvedAddresses) {
232-
return new ChildLbState(key, lazyLbFactory, null, EMPTY_PICKER);
231+
ResolvedAddresses resolvedAddresses) {
232+
return new ChildLbState(key, lazyLbFactory, null);
233233
}
234234

235235
private Status validateAddrList(List<EquivalentAddressGroup> addrList) {

xds/src/main/java/io/grpc/xds/WeightedRoundRobinLoadBalancer.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,8 @@ public WeightedRoundRobinLoadBalancer(Helper helper, Ticker ticker) {
149149

150150
@Override
151151
protected ChildLbState createChildLbState(Object key, Object policyConfig,
152-
SubchannelPicker initialPicker, ResolvedAddresses unused) {
153-
ChildLbState childLbState = new WeightedChildLbState(key, pickFirstLbProvider, policyConfig,
154-
initialPicker);
152+
ResolvedAddresses unused) {
153+
ChildLbState childLbState = new WeightedChildLbState(key, pickFirstLbProvider, policyConfig);
155154
return childLbState;
156155
}
157156

@@ -290,9 +289,9 @@ final class WeightedChildLbState extends ChildLbState {
290289

291290
private OrcaReportListener orcaReportListener;
292291

293-
public WeightedChildLbState(Object key, LoadBalancerProvider policyProvider, Object childConfig,
294-
SubchannelPicker initialPicker) {
295-
super(key, policyProvider, childConfig, initialPicker);
292+
public WeightedChildLbState(
293+
Object key, LoadBalancerProvider policyProvider, Object childConfig) {
294+
super(key, policyProvider, childConfig);
296295
}
297296

298297
@Override

0 commit comments

Comments
 (0)