Class PreviousPrioritiesConfig.Builder

java.lang.Object
com.google.protobuf.AbstractMessageLite.Builder
com.google.protobuf.AbstractMessage.Builder<BuilderT>
com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>
io.envoyproxy.envoy.config.retry.previous_priorities.PreviousPrioritiesConfig.Builder
All Implemented Interfaces:
com.google.protobuf.Message.Builder, com.google.protobuf.MessageLite.Builder, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, PreviousPrioritiesConfigOrBuilder, Cloneable
Enclosing class:
PreviousPrioritiesConfig

public static final class PreviousPrioritiesConfig.Builder extends com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder> implements PreviousPrioritiesConfigOrBuilder
 A retry host selector that attempts to spread retries between priorities, even if certain
 priorities would not normally be attempted due to higher priorities being available.

 As priorities get excluded, load will be distributed amongst the remaining healthy priorities
 based on the relative health of the priorities, matching how load is distributed during regular
 host selection. For example, given priority healths of {100, 50, 50}, the original load will be
 {100, 0, 0} (since P0 has capacity to handle 100% of the traffic). If P0 is excluded, the load
 changes to {0, 50, 50}, because P1 is only able to handle 50% of the traffic, causing the
 remaining to spill over to P2.

 Each priority attempted will be excluded until there are no healthy priorities left, at which
 point the list of attempted priorities will be reset, essentially starting from the beginning.
 For example, given three priorities P0, P1, P2 with healthy % of 100, 0 and 50 respectively, the
 following sequence of priorities would be selected (assuming update_frequency = 1):
 Attempt 1: P0 (P0 is 100% healthy)
 Attempt 2: P2 (P0 already attempted, P2 only healthy priority)
 Attempt 3: P0 (no healthy priorities, reset)
 Attempt 4: P2

 In the case of all upstream hosts being unhealthy, no adjustments will be made to the original
 priority load, so behavior should be identical to not using this plugin.

 Using this PriorityFilter requires rebuilding the priority load, which runs in O(# of
 priorities), which might incur significant overhead for clusters with many priorities.
 [#extension: envoy.retry_priorities.previous_priorities]
 
Protobuf type envoy.config.retry.previous_priorities.PreviousPrioritiesConfig
  • Method Details

    • getDescriptor

      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
    • internalGetFieldAccessorTable

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
      Specified by:
      internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>
    • clear

      Specified by:
      clear in interface com.google.protobuf.Message.Builder
      Specified by:
      clear in interface com.google.protobuf.MessageLite.Builder
      Overrides:
      clear in class com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>
    • getDescriptorForType

      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType()
      Specified by:
      getDescriptorForType in interface com.google.protobuf.Message.Builder
      Specified by:
      getDescriptorForType in interface com.google.protobuf.MessageOrBuilder
      Overrides:
      getDescriptorForType in class com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>
    • getDefaultInstanceForType

      public PreviousPrioritiesConfig getDefaultInstanceForType()
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
      Specified by:
      getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder
    • build

      public PreviousPrioritiesConfig build()
      Specified by:
      build in interface com.google.protobuf.Message.Builder
      Specified by:
      build in interface com.google.protobuf.MessageLite.Builder
    • buildPartial

      public PreviousPrioritiesConfig buildPartial()
      Specified by:
      buildPartial in interface com.google.protobuf.Message.Builder
      Specified by:
      buildPartial in interface com.google.protobuf.MessageLite.Builder
    • clone

      Specified by:
      clone in interface com.google.protobuf.Message.Builder
      Specified by:
      clone in interface com.google.protobuf.MessageLite.Builder
      Overrides:
      clone in class com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>
    • setField

      public PreviousPrioritiesConfig.Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, Object value)
      Specified by:
      setField in interface com.google.protobuf.Message.Builder
      Overrides:
      setField in class com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>
    • clearField

      public PreviousPrioritiesConfig.Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field)
      Specified by:
      clearField in interface com.google.protobuf.Message.Builder
      Overrides:
      clearField in class com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>
    • clearOneof

      public PreviousPrioritiesConfig.Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)
      Specified by:
      clearOneof in interface com.google.protobuf.Message.Builder
      Overrides:
      clearOneof in class com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>
    • setRepeatedField

      public PreviousPrioritiesConfig.Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, Object value)
      Specified by:
      setRepeatedField in interface com.google.protobuf.Message.Builder
      Overrides:
      setRepeatedField in class com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>
    • addRepeatedField

      public PreviousPrioritiesConfig.Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, Object value)
      Specified by:
      addRepeatedField in interface com.google.protobuf.Message.Builder
      Overrides:
      addRepeatedField in class com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>
    • mergeFrom

      public PreviousPrioritiesConfig.Builder mergeFrom(com.google.protobuf.Message other)
      Specified by:
      mergeFrom in interface com.google.protobuf.Message.Builder
      Overrides:
      mergeFrom in class com.google.protobuf.AbstractMessage.Builder<PreviousPrioritiesConfig.Builder>
    • mergeFrom

    • isInitialized

      public final boolean isInitialized()
      Specified by:
      isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
      Overrides:
      isInitialized in class com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>
    • mergeFrom

      public PreviousPrioritiesConfig.Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
      Specified by:
      mergeFrom in interface com.google.protobuf.Message.Builder
      Specified by:
      mergeFrom in interface com.google.protobuf.MessageLite.Builder
      Overrides:
      mergeFrom in class com.google.protobuf.AbstractMessage.Builder<PreviousPrioritiesConfig.Builder>
      Throws:
      IOException
    • getUpdateFrequency

      public int getUpdateFrequency()
       How often the priority load should be updated based on previously attempted priorities. Useful
       to allow each priorities to receive more than one request before being excluded or to reduce
       the number of times that the priority load has to be recomputed.
      
       For example, by setting this to 2, then the first two attempts (initial attempt and first
       retry) will use the unmodified priority load. The third and fourth attempt will use priority
       load which excludes the priorities routed to with the first two attempts, and the fifth and
       sixth attempt will use the priority load excluding the priorities used for the first four
       attempts.
      
       Must be greater than 0.
       
      int32 update_frequency = 1 [(.validate.rules) = { ... }
      Specified by:
      getUpdateFrequency in interface PreviousPrioritiesConfigOrBuilder
      Returns:
      The updateFrequency.
    • setUpdateFrequency

      public PreviousPrioritiesConfig.Builder setUpdateFrequency(int value)
       How often the priority load should be updated based on previously attempted priorities. Useful
       to allow each priorities to receive more than one request before being excluded or to reduce
       the number of times that the priority load has to be recomputed.
      
       For example, by setting this to 2, then the first two attempts (initial attempt and first
       retry) will use the unmodified priority load. The third and fourth attempt will use priority
       load which excludes the priorities routed to with the first two attempts, and the fifth and
       sixth attempt will use the priority load excluding the priorities used for the first four
       attempts.
      
       Must be greater than 0.
       
      int32 update_frequency = 1 [(.validate.rules) = { ... }
      Parameters:
      value - The updateFrequency to set.
      Returns:
      This builder for chaining.
    • clearUpdateFrequency

      public PreviousPrioritiesConfig.Builder clearUpdateFrequency()
       How often the priority load should be updated based on previously attempted priorities. Useful
       to allow each priorities to receive more than one request before being excluded or to reduce
       the number of times that the priority load has to be recomputed.
      
       For example, by setting this to 2, then the first two attempts (initial attempt and first
       retry) will use the unmodified priority load. The third and fourth attempt will use priority
       load which excludes the priorities routed to with the first two attempts, and the fifth and
       sixth attempt will use the priority load excluding the priorities used for the first four
       attempts.
      
       Must be greater than 0.
       
      int32 update_frequency = 1 [(.validate.rules) = { ... }
      Returns:
      This builder for chaining.
    • setUnknownFields

      public final PreviousPrioritiesConfig.Builder setUnknownFields(com.google.protobuf.UnknownFieldSet unknownFields)
      Specified by:
      setUnknownFields in interface com.google.protobuf.Message.Builder
      Overrides:
      setUnknownFields in class com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>
    • mergeUnknownFields

      public final PreviousPrioritiesConfig.Builder mergeUnknownFields(com.google.protobuf.UnknownFieldSet unknownFields)
      Specified by:
      mergeUnknownFields in interface com.google.protobuf.Message.Builder
      Overrides:
      mergeUnknownFields in class com.google.protobuf.GeneratedMessageV3.Builder<PreviousPrioritiesConfig.Builder>