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| Modifier and Type | Class and Description |
|---|---|
static class |
PreviousPrioritiesConfig.Builder
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.
|
com.google.protobuf.GeneratedMessageV3.BuilderParent, com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<MessageType extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage,BuilderType extends com.google.protobuf.GeneratedMessageV3.ExtendableBuilder<MessageType,BuilderType>>, com.google.protobuf.GeneratedMessageV3.ExtendableMessage<MessageType extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage>, com.google.protobuf.GeneratedMessageV3.ExtendableMessageOrBuilder<MessageType extends com.google.protobuf.GeneratedMessageV3.ExtendableMessage>, com.google.protobuf.GeneratedMessageV3.FieldAccessorTable, com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter| Modifier and Type | Field and Description |
|---|---|
static int |
UPDATE_FREQUENCY_FIELD_NUMBER |
| Modifier and Type | Method and Description |
|---|---|
boolean |
equals(Object obj) |
static PreviousPrioritiesConfig |
getDefaultInstance() |
PreviousPrioritiesConfig |
getDefaultInstanceForType() |
static com.google.protobuf.Descriptors.Descriptor |
getDescriptor() |
com.google.protobuf.Parser<PreviousPrioritiesConfig> |
getParserForType() |
int |
getSerializedSize() |
com.google.protobuf.UnknownFieldSet |
getUnknownFields() |
int |
getUpdateFrequency()
How often the priority load should be updated based on previously attempted priorities.
|
int |
hashCode() |
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable |
internalGetFieldAccessorTable() |
boolean |
isInitialized() |
static PreviousPrioritiesConfig.Builder |
newBuilder() |
static PreviousPrioritiesConfig.Builder |
newBuilder(PreviousPrioritiesConfig prototype) |
PreviousPrioritiesConfig.Builder |
newBuilderForType() |
protected PreviousPrioritiesConfig.Builder |
newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) |
protected Object |
newInstance(com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter unused) |
static PreviousPrioritiesConfig |
parseDelimitedFrom(InputStream input) |
static PreviousPrioritiesConfig |
parseDelimitedFrom(InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
static PreviousPrioritiesConfig |
parseFrom(byte[] data) |
static PreviousPrioritiesConfig |
parseFrom(byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
static PreviousPrioritiesConfig |
parseFrom(ByteBuffer data) |
static PreviousPrioritiesConfig |
parseFrom(ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
static PreviousPrioritiesConfig |
parseFrom(com.google.protobuf.ByteString data) |
static PreviousPrioritiesConfig |
parseFrom(com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
static PreviousPrioritiesConfig |
parseFrom(com.google.protobuf.CodedInputStream input) |
static PreviousPrioritiesConfig |
parseFrom(com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
static PreviousPrioritiesConfig |
parseFrom(InputStream input) |
static PreviousPrioritiesConfig |
parseFrom(InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry) |
static com.google.protobuf.Parser<PreviousPrioritiesConfig> |
parser() |
PreviousPrioritiesConfig.Builder |
toBuilder() |
void |
writeTo(com.google.protobuf.CodedOutputStream output) |
canUseUnsafe, computeStringSize, computeStringSizeNoTag, emptyBooleanList, emptyDoubleList, emptyFloatList, emptyIntList, emptyLongList, getAllFields, getDescriptorForType, getField, getOneofFieldDescriptor, getRepeatedField, getRepeatedFieldCount, hasField, hasOneof, internalGetMapField, makeExtensionsImmutable, mergeFromAndMakeImmutableInternal, mutableCopy, mutableCopy, mutableCopy, mutableCopy, mutableCopy, newBooleanList, newBuilderForType, newDoubleList, newFloatList, newIntList, newLongList, parseDelimitedWithIOException, parseDelimitedWithIOException, parseUnknownField, parseUnknownFieldProto3, parseWithIOException, parseWithIOException, parseWithIOException, parseWithIOException, serializeBooleanMapTo, serializeIntegerMapTo, serializeLongMapTo, serializeStringMapTo, writeReplace, writeString, writeStringNoTagfindInitializationErrors, getInitializationErrorString, hashBoolean, hashEnum, hashEnumList, hashFields, hashLong, toStringaddAll, addAll, checkByteStringIsUtf8, toByteArray, toByteString, writeDelimitedTo, writeToclone, finalize, getClass, notify, notifyAll, wait, wait, waitpublic static final int UPDATE_FREQUENCY_FIELD_NUMBER
protected Object newInstance(com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter unused)
newInstance in class com.google.protobuf.GeneratedMessageV3public final com.google.protobuf.UnknownFieldSet getUnknownFields()
getUnknownFields in interface com.google.protobuf.MessageOrBuildergetUnknownFields in class com.google.protobuf.GeneratedMessageV3public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessageV3public 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) = { ... }getUpdateFrequency in interface PreviousPrioritiesConfigOrBuilderpublic final boolean isInitialized()
isInitialized in interface com.google.protobuf.MessageLiteOrBuilderisInitialized in class com.google.protobuf.GeneratedMessageV3public void writeTo(com.google.protobuf.CodedOutputStream output)
throws IOException
writeTo in interface com.google.protobuf.MessageLitewriteTo in class com.google.protobuf.GeneratedMessageV3IOExceptionpublic int getSerializedSize()
getSerializedSize in interface com.google.protobuf.MessageLitegetSerializedSize in class com.google.protobuf.GeneratedMessageV3public boolean equals(Object obj)
equals in interface com.google.protobuf.Messageequals in class com.google.protobuf.AbstractMessagepublic int hashCode()
hashCode in interface com.google.protobuf.MessagehashCode in class com.google.protobuf.AbstractMessagepublic static PreviousPrioritiesConfig parseFrom(ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException
com.google.protobuf.InvalidProtocolBufferExceptionpublic static PreviousPrioritiesConfig parseFrom(ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
com.google.protobuf.InvalidProtocolBufferExceptionpublic static PreviousPrioritiesConfig parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException
com.google.protobuf.InvalidProtocolBufferExceptionpublic static PreviousPrioritiesConfig parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
com.google.protobuf.InvalidProtocolBufferExceptionpublic static PreviousPrioritiesConfig parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException
com.google.protobuf.InvalidProtocolBufferExceptionpublic static PreviousPrioritiesConfig parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException
com.google.protobuf.InvalidProtocolBufferExceptionpublic static PreviousPrioritiesConfig parseFrom(InputStream input) throws IOException
IOExceptionpublic static PreviousPrioritiesConfig parseFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
IOExceptionpublic static PreviousPrioritiesConfig parseDelimitedFrom(InputStream input) throws IOException
IOExceptionpublic static PreviousPrioritiesConfig parseDelimitedFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
IOExceptionpublic static PreviousPrioritiesConfig parseFrom(com.google.protobuf.CodedInputStream input) throws IOException
IOExceptionpublic static PreviousPrioritiesConfig parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException
IOExceptionpublic PreviousPrioritiesConfig.Builder newBuilderForType()
newBuilderForType in interface com.google.protobuf.MessagenewBuilderForType in interface com.google.protobuf.MessageLitepublic static PreviousPrioritiesConfig.Builder newBuilder()
public static PreviousPrioritiesConfig.Builder newBuilder(PreviousPrioritiesConfig prototype)
public PreviousPrioritiesConfig.Builder toBuilder()
toBuilder in interface com.google.protobuf.MessagetoBuilder in interface com.google.protobuf.MessageLiteprotected PreviousPrioritiesConfig.Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
newBuilderForType in class com.google.protobuf.GeneratedMessageV3public static PreviousPrioritiesConfig getDefaultInstance()
public static com.google.protobuf.Parser<PreviousPrioritiesConfig> parser()
public com.google.protobuf.Parser<PreviousPrioritiesConfig> getParserForType()
getParserForType in interface com.google.protobuf.MessagegetParserForType in interface com.google.protobuf.MessageLitegetParserForType in class com.google.protobuf.GeneratedMessageV3public PreviousPrioritiesConfig getDefaultInstanceForType()
getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuildergetDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilderCopyright © 2018–2021 The Envoy Project. All rights reserved.