Package io.grpc.internal
Class PickFirstLoadBalancer
- java.lang.Object
-
- io.grpc.LoadBalancer
-
- io.grpc.internal.PickFirstLoadBalancer
-
final class PickFirstLoadBalancer extends LoadBalancer
ALoadBalancer
that provides no load-balancing over the addresses from theNameResolver
. The channel's default behavior is used, which is walking down the address list and sticking to the first that works.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
PickFirstLoadBalancer.Picker
No-op picker which doesn't add any custom picking logic.static class
PickFirstLoadBalancer.PickFirstLoadBalancerConfig
private class
PickFirstLoadBalancer.RequestConnectionPicker
Picker that requests connection during the first pick, and returns noResult.-
Nested classes/interfaces inherited from class io.grpc.LoadBalancer
LoadBalancer.CreateSubchannelArgs, LoadBalancer.ErrorPicker, LoadBalancer.Factory, LoadBalancer.FixedResultPicker, LoadBalancer.Helper, LoadBalancer.PickDetailsConsumer, LoadBalancer.PickResult, LoadBalancer.PickSubchannelArgs, LoadBalancer.ResolvedAddresses, LoadBalancer.Subchannel, LoadBalancer.SubchannelPicker, LoadBalancer.SubchannelStateListener
-
-
Field Summary
Fields Modifier and Type Field Description private ConnectivityState
currentState
private LoadBalancer.Helper
helper
private LoadBalancer.Subchannel
subchannel
-
Fields inherited from class io.grpc.LoadBalancer
ATTR_HEALTH_CHECKING_CONFIG, DISABLE_SUBCHANNEL_RECONNECT_KEY, EMPTY_PICKER, HAS_HEALTH_PRODUCER_LISTENER_KEY, HEALTH_CONSUMER_LISTENER_ARG_KEY, IS_PETIOLE_POLICY
-
-
Constructor Summary
Constructors Constructor Description PickFirstLoadBalancer(LoadBalancer.Helper helper)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Status
acceptResolvedAddresses(LoadBalancer.ResolvedAddresses resolvedAddresses)
Accepts newly resolved addresses from the name resolution system.void
handleNameResolutionError(Status error)
Handles an error from the name resolution system.private void
processSubchannelState(LoadBalancer.Subchannel subchannel, ConnectivityStateInfo stateInfo)
void
requestConnection()
The channel asks the LoadBalancer to establish connections now (if applicable) so that the upcoming RPC may then just pick a ready connection without waiting for connections.void
shutdown()
The channel asks the load-balancer to shutdown.private void
updateBalancingState(ConnectivityState state, LoadBalancer.SubchannelPicker picker)
-
Methods inherited from class io.grpc.LoadBalancer
canHandleEmptyAddressListFromNameResolution, handleResolvedAddresses, handleSubchannelState
-
-
-
-
Field Detail
-
helper
private final LoadBalancer.Helper helper
-
subchannel
private LoadBalancer.Subchannel subchannel
-
currentState
private ConnectivityState currentState
-
-
Constructor Detail
-
PickFirstLoadBalancer
PickFirstLoadBalancer(LoadBalancer.Helper helper)
-
-
Method Detail
-
acceptResolvedAddresses
public Status acceptResolvedAddresses(LoadBalancer.ResolvedAddresses resolvedAddresses)
Description copied from class:LoadBalancer
Accepts newly resolved addresses from the name resolution system. TheEquivalentAddressGroup
addresses should be considered equivalent but may be flattened into a single list if needed.Implementations can choose to reject the given addresses by returning
false
.Implementations should not modify the given
addresses
.- Overrides:
acceptResolvedAddresses
in classLoadBalancer
- Parameters:
resolvedAddresses
- the resolved server addresses, attributes, and config.- Returns:
true
if the resolved addresses were accepted.false
if rejected.
-
handleNameResolutionError
public void handleNameResolutionError(Status error)
Description copied from class:LoadBalancer
Handles an error from the name resolution system.- Specified by:
handleNameResolutionError
in classLoadBalancer
- Parameters:
error
- a non-OK status
-
processSubchannelState
private void processSubchannelState(LoadBalancer.Subchannel subchannel, ConnectivityStateInfo stateInfo)
-
updateBalancingState
private void updateBalancingState(ConnectivityState state, LoadBalancer.SubchannelPicker picker)
-
shutdown
public void shutdown()
Description copied from class:LoadBalancer
The channel asks the load-balancer to shutdown. No more methods on this class will be called after this method. The implementation should shutdown all Subchannels and OOB channels, and do any other cleanup as necessary.- Specified by:
shutdown
in classLoadBalancer
-
requestConnection
public void requestConnection()
Description copied from class:LoadBalancer
The channel asks the LoadBalancer to establish connections now (if applicable) so that the upcoming RPC may then just pick a ready connection without waiting for connections. This is triggered byManagedChannel.getState(true)
.If LoadBalancer doesn't override it, this is no-op. If it infeasible to create connections given the current state, e.g. no Subchannel has been created yet, LoadBalancer can ignore this request.
- Overrides:
requestConnection
in classLoadBalancer
-
-