Class PreviousPrioritiesConfig

  • All Implemented Interfaces:
    com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, PreviousPrioritiesConfigOrBuilder, Serializable

    public final class PreviousPrioritiesConfig
    extends com.google.protobuf.GeneratedMessageV3
    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
    See Also:
    Serialized Form
    • Field Detail

      • UPDATE_FREQUENCY_FIELD_NUMBER

        public static final int UPDATE_FREQUENCY_FIELD_NUMBER
        See Also:
        Constant Field Values
    • Method Detail

      • newInstance

        protected Object newInstance​(com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter unused)
        Overrides:
        newInstance in class com.google.protobuf.GeneratedMessageV3
      • getUnknownFields

        public final com.google.protobuf.UnknownFieldSet getUnknownFields()
        Specified by:
        getUnknownFields in interface com.google.protobuf.MessageOrBuilder
        Overrides:
        getUnknownFields in class com.google.protobuf.GeneratedMessageV3
      • 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
      • 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.
      • isInitialized

        public final boolean isInitialized()
        Specified by:
        isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
        Overrides:
        isInitialized in class com.google.protobuf.GeneratedMessageV3
      • writeTo

        public void writeTo​(com.google.protobuf.CodedOutputStream output)
                     throws IOException
        Specified by:
        writeTo in interface com.google.protobuf.MessageLite
        Overrides:
        writeTo in class com.google.protobuf.GeneratedMessageV3
        Throws:
        IOException
      • getSerializedSize

        public int getSerializedSize()
        Specified by:
        getSerializedSize in interface com.google.protobuf.MessageLite
        Overrides:
        getSerializedSize in class com.google.protobuf.GeneratedMessageV3
      • equals

        public boolean equals​(Object obj)
        Specified by:
        equals in interface com.google.protobuf.Message
        Overrides:
        equals in class com.google.protobuf.AbstractMessage
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface com.google.protobuf.Message
        Overrides:
        hashCode in class com.google.protobuf.AbstractMessage
      • parseFrom

        public static PreviousPrioritiesConfig parseFrom​(ByteBuffer data)
                                                  throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static PreviousPrioritiesConfig parseFrom​(ByteBuffer data,
                                                         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                  throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static PreviousPrioritiesConfig parseFrom​(com.google.protobuf.ByteString data)
                                                  throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static PreviousPrioritiesConfig parseFrom​(com.google.protobuf.ByteString data,
                                                         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                  throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static PreviousPrioritiesConfig parseFrom​(byte[] data)
                                                  throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static PreviousPrioritiesConfig parseFrom​(byte[] data,
                                                         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                  throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • newBuilderForType

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

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

        protected PreviousPrioritiesConfig.Builder newBuilderForType​(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
        Specified by:
        newBuilderForType in class com.google.protobuf.GeneratedMessageV3
      • getParserForType

        public com.google.protobuf.Parser<PreviousPrioritiesConfig> getParserForType()
        Specified by:
        getParserForType in interface com.google.protobuf.Message
        Specified by:
        getParserForType in interface com.google.protobuf.MessageLite
        Overrides:
        getParserForType in class com.google.protobuf.GeneratedMessageV3
      • getDefaultInstanceForType

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