Class PickFirstLoadBalancerProvider


  • public final class PickFirstLoadBalancerProvider
    extends LoadBalancerProvider
    Provider for the "pick_first" balancing policy.

    This provides no load-balancing over the addresses from the NameResolver. It walks down the address list and sticks to the first that works.

    • Field Detail

      • GRPC_PF_USE_HAPPY_EYEBALLS

        public static final java.lang.String GRPC_PF_USE_HAPPY_EYEBALLS
        See Also:
        Constant Field Values
      • SHUFFLE_ADDRESS_LIST_KEY

        private static final java.lang.String SHUFFLE_ADDRESS_LIST_KEY
        See Also:
        Constant Field Values
      • enableNewPickFirst

        private static boolean enableNewPickFirst
    • Constructor Detail

      • PickFirstLoadBalancerProvider

        public PickFirstLoadBalancerProvider()
    • Method Detail

      • isEnabledHappyEyeballs

        public static boolean isEnabledHappyEyeballs()
      • getPriority

        public int getPriority()
        Description copied from class: LoadBalancerProvider
        A priority, from 0 to 10 that this provider should be used, taking the current environment into consideration. 5 should be considered the default, and then tweaked based on environment detection. A priority of 0 does not imply that the provider wouldn't work; just that it should be last in line.
        Specified by:
        getPriority in class LoadBalancerProvider
      • getPolicyName

        public java.lang.String getPolicyName()
        Description copied from class: LoadBalancerProvider
        Returns the load-balancing policy name associated with this provider, which makes it selectable via LoadBalancerRegistry.getProvider(java.lang.String). This is called only when the class is loaded. It shouldn't change, and there is no point doing so.

        The policy name should consist of only lower case letters letters, underscore and digits, and can only start with letters.

        Specified by:
        getPolicyName in class LoadBalancerProvider
      • parseLoadBalancingPolicyConfig

        public NameResolver.ConfigOrError parseLoadBalancingPolicyConfig​(java.util.Map<java.lang.String,​?> rawLbPolicyConfig)
        Description copied from class: LoadBalancerProvider
        Parses the config for the Load Balancing policy unpacked from the service config. This will return a NameResolver.ConfigOrError which contains either the successfully parsed config, or the Status representing the failure to parse. Implementations are expected to not throw exceptions but return a Status representing the failure. If successful, the load balancing policy config should be immutable.
        Overrides:
        parseLoadBalancingPolicyConfig in class LoadBalancerProvider
        Parameters:
        rawLbPolicyConfig - The Map representation of the load balancing policy choice.
        Returns:
        a tuple of the fully parsed and validated balancer configuration, else the Status.
        See Also:
        A24-lb-policy-config.md
      • getLbPolicyConfig

        private static java.lang.Object getLbPolicyConfig​(java.util.Map<java.lang.String,​?> rawLbPolicyConfig)
      • isEnabledNewPickFirst

        public static boolean isEnabledNewPickFirst()