Class 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 Detail

      • 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>
      • 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
      • 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>
      • 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>