Class RetryPolicy.RateLimitedRetryBackOff.Builder

java.lang.Object
com.google.protobuf.AbstractMessageLite.Builder
com.google.protobuf.AbstractMessage.Builder<RetryPolicy.RateLimitedRetryBackOff.Builder>
com.google.protobuf.GeneratedMessage.Builder<RetryPolicy.RateLimitedRetryBackOff.Builder>
io.envoyproxy.envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff.Builder
All Implemented Interfaces:
com.google.protobuf.Message.Builder, com.google.protobuf.MessageLite.Builder, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, RetryPolicy.RateLimitedRetryBackOffOrBuilder, Cloneable
Enclosing class:
RetryPolicy.RateLimitedRetryBackOff

public static final class RetryPolicy.RateLimitedRetryBackOff.Builder extends com.google.protobuf.GeneratedMessage.Builder<RetryPolicy.RateLimitedRetryBackOff.Builder> implements RetryPolicy.RateLimitedRetryBackOffOrBuilder
 A retry back-off strategy that applies when the upstream server rate limits
 the request.

 Given this configuration:

 .. code-block:: yaml

 rate_limited_retry_back_off:
 reset_headers:
 - name: Retry-After
 format: SECONDS
 - name: X-RateLimit-Reset
 format: UNIX_TIMESTAMP
 max_interval: "300s"

 The following algorithm will apply:

 1. If the response contains the header ``Retry-After`` its value must be on
 the form ``120`` (an integer that represents the number of seconds to
 wait before retrying). If so, this value is used as the back-off interval.
 2. Otherwise, if the response contains the header ``X-RateLimit-Reset`` its
 value must be on the form ``1595320702`` (an integer that represents the
 point in time at which to retry, as a Unix timestamp in seconds). If so,
 the current time is subtracted from this value and the result is used as
 the back-off interval.
 3. Otherwise, Envoy will use the default
 :ref:`exponential back-off <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_back_off>`
 strategy.

 No matter which format is used, if the resulting back-off interval exceeds
 ``max_interval`` it is discarded and the next header in ``reset_headers``
 is tried. If a request timeout is configured for the route it will further
 limit how long the request will be allowed to run.

 To prevent many clients retrying at the same point in time jitter is added
 to the back-off interval, so the resulting interval is decided by taking:
 ``random(interval, interval * 1.5)``.

 .. attention::

 Configuring ``rate_limited_retry_back_off`` will not by itself cause a request
 to be retried. You will still need to configure the right retry policy to match
 the responses from the upstream server.
 
Protobuf type envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff
  • Field Details

  • Constructor Details

    • Builder

      private Builder()
    • Builder

      private Builder(com.google.protobuf.AbstractMessage.BuilderParent parent)
  • Method Details

    • getDescriptor

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

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable()
      Specified by:
      internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessage.Builder<RetryPolicy.RateLimitedRetryBackOff.Builder>
    • maybeForceBuilderInitialization

      private void maybeForceBuilderInitialization()
    • 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.GeneratedMessage.Builder<RetryPolicy.RateLimitedRetryBackOff.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.GeneratedMessage.Builder<RetryPolicy.RateLimitedRetryBackOff.Builder>
    • getDefaultInstanceForType

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

      Specified by:
      build in interface com.google.protobuf.Message.Builder
      Specified by:
      build in interface com.google.protobuf.MessageLite.Builder
    • buildPartial

      public RetryPolicy.RateLimitedRetryBackOff buildPartial()
      Specified by:
      buildPartial in interface com.google.protobuf.Message.Builder
      Specified by:
      buildPartial in interface com.google.protobuf.MessageLite.Builder
    • buildPartialRepeatedFields

      private void buildPartialRepeatedFields(RetryPolicy.RateLimitedRetryBackOff result)
    • buildPartial0

      private void buildPartial0(RetryPolicy.RateLimitedRetryBackOff result)
    • mergeFrom

      public RetryPolicy.RateLimitedRetryBackOff.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<RetryPolicy.RateLimitedRetryBackOff.Builder>
    • mergeFrom

    • isInitialized

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

      public RetryPolicy.RateLimitedRetryBackOff.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<RetryPolicy.RateLimitedRetryBackOff.Builder>
      Throws:
      IOException
    • ensureResetHeadersIsMutable

      private void ensureResetHeadersIsMutable()
    • getResetHeadersList

      public List<RetryPolicy.ResetHeader> getResetHeadersList()
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
      Specified by:
      getResetHeadersList in interface RetryPolicy.RateLimitedRetryBackOffOrBuilder
    • getResetHeadersCount

      public int getResetHeadersCount()
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
      Specified by:
      getResetHeadersCount in interface RetryPolicy.RateLimitedRetryBackOffOrBuilder
    • getResetHeaders

      public RetryPolicy.ResetHeader getResetHeaders(int index)
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
      Specified by:
      getResetHeaders in interface RetryPolicy.RateLimitedRetryBackOffOrBuilder
    • setResetHeaders

      public RetryPolicy.RateLimitedRetryBackOff.Builder setResetHeaders(int index, RetryPolicy.ResetHeader value)
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • setResetHeaders

      public RetryPolicy.RateLimitedRetryBackOff.Builder setResetHeaders(int index, RetryPolicy.ResetHeader.Builder builderForValue)
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • addResetHeaders

       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • addResetHeaders

      public RetryPolicy.RateLimitedRetryBackOff.Builder addResetHeaders(int index, RetryPolicy.ResetHeader value)
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • addResetHeaders

       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • addResetHeaders

      public RetryPolicy.RateLimitedRetryBackOff.Builder addResetHeaders(int index, RetryPolicy.ResetHeader.Builder builderForValue)
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • addAllResetHeaders

      public RetryPolicy.RateLimitedRetryBackOff.Builder addAllResetHeaders(Iterable<? extends RetryPolicy.ResetHeader> values)
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • clearResetHeaders

      public RetryPolicy.RateLimitedRetryBackOff.Builder clearResetHeaders()
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • removeResetHeaders

      public RetryPolicy.RateLimitedRetryBackOff.Builder removeResetHeaders(int index)
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • getResetHeadersBuilder

      public RetryPolicy.ResetHeader.Builder getResetHeadersBuilder(int index)
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • getResetHeadersOrBuilder

      public RetryPolicy.ResetHeaderOrBuilder getResetHeadersOrBuilder(int index)
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
      Specified by:
      getResetHeadersOrBuilder in interface RetryPolicy.RateLimitedRetryBackOffOrBuilder
    • getResetHeadersOrBuilderList

      public List<? extends RetryPolicy.ResetHeaderOrBuilder> getResetHeadersOrBuilderList()
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
      Specified by:
      getResetHeadersOrBuilderList in interface RetryPolicy.RateLimitedRetryBackOffOrBuilder
    • addResetHeadersBuilder

      public RetryPolicy.ResetHeader.Builder addResetHeadersBuilder()
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • addResetHeadersBuilder

      public RetryPolicy.ResetHeader.Builder addResetHeadersBuilder(int index)
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • getResetHeadersBuilderList

      public List<RetryPolicy.ResetHeader.Builder> getResetHeadersBuilderList()
       Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``)
       to match against the response. Headers are tried in order, and matched case
       insensitive. The first header to be parsed successfully is used. If no headers
       match the default exponential back-off is used instead.
       
      repeated .envoy.config.route.v3.RetryPolicy.ResetHeader reset_headers = 1 [(.validate.rules) = { ... }
    • internalGetResetHeadersFieldBuilder

      private com.google.protobuf.RepeatedFieldBuilder<RetryPolicy.ResetHeader,RetryPolicy.ResetHeader.Builder,RetryPolicy.ResetHeaderOrBuilder> internalGetResetHeadersFieldBuilder()
    • hasMaxInterval

      public boolean hasMaxInterval()
       Specifies the maximum back off interval that Envoy will allow. If a reset
       header contains an interval longer than this then it will be discarded and
       the next header will be tried. Defaults to 300 seconds.
       
      .google.protobuf.Duration max_interval = 2 [(.validate.rules) = { ... }
      Specified by:
      hasMaxInterval in interface RetryPolicy.RateLimitedRetryBackOffOrBuilder
      Returns:
      Whether the maxInterval field is set.
    • getMaxInterval

      public com.google.protobuf.Duration getMaxInterval()
       Specifies the maximum back off interval that Envoy will allow. If a reset
       header contains an interval longer than this then it will be discarded and
       the next header will be tried. Defaults to 300 seconds.
       
      .google.protobuf.Duration max_interval = 2 [(.validate.rules) = { ... }
      Specified by:
      getMaxInterval in interface RetryPolicy.RateLimitedRetryBackOffOrBuilder
      Returns:
      The maxInterval.
    • setMaxInterval

      public RetryPolicy.RateLimitedRetryBackOff.Builder setMaxInterval(com.google.protobuf.Duration value)
       Specifies the maximum back off interval that Envoy will allow. If a reset
       header contains an interval longer than this then it will be discarded and
       the next header will be tried. Defaults to 300 seconds.
       
      .google.protobuf.Duration max_interval = 2 [(.validate.rules) = { ... }
    • setMaxInterval

      public RetryPolicy.RateLimitedRetryBackOff.Builder setMaxInterval(com.google.protobuf.Duration.Builder builderForValue)
       Specifies the maximum back off interval that Envoy will allow. If a reset
       header contains an interval longer than this then it will be discarded and
       the next header will be tried. Defaults to 300 seconds.
       
      .google.protobuf.Duration max_interval = 2 [(.validate.rules) = { ... }
    • mergeMaxInterval

      public RetryPolicy.RateLimitedRetryBackOff.Builder mergeMaxInterval(com.google.protobuf.Duration value)
       Specifies the maximum back off interval that Envoy will allow. If a reset
       header contains an interval longer than this then it will be discarded and
       the next header will be tried. Defaults to 300 seconds.
       
      .google.protobuf.Duration max_interval = 2 [(.validate.rules) = { ... }
    • clearMaxInterval

       Specifies the maximum back off interval that Envoy will allow. If a reset
       header contains an interval longer than this then it will be discarded and
       the next header will be tried. Defaults to 300 seconds.
       
      .google.protobuf.Duration max_interval = 2 [(.validate.rules) = { ... }
    • getMaxIntervalBuilder

      public com.google.protobuf.Duration.Builder getMaxIntervalBuilder()
       Specifies the maximum back off interval that Envoy will allow. If a reset
       header contains an interval longer than this then it will be discarded and
       the next header will be tried. Defaults to 300 seconds.
       
      .google.protobuf.Duration max_interval = 2 [(.validate.rules) = { ... }
    • getMaxIntervalOrBuilder

      public com.google.protobuf.DurationOrBuilder getMaxIntervalOrBuilder()
       Specifies the maximum back off interval that Envoy will allow. If a reset
       header contains an interval longer than this then it will be discarded and
       the next header will be tried. Defaults to 300 seconds.
       
      .google.protobuf.Duration max_interval = 2 [(.validate.rules) = { ... }
      Specified by:
      getMaxIntervalOrBuilder in interface RetryPolicy.RateLimitedRetryBackOffOrBuilder
    • internalGetMaxIntervalFieldBuilder

      private com.google.protobuf.SingleFieldBuilder<com.google.protobuf.Duration,com.google.protobuf.Duration.Builder,com.google.protobuf.DurationOrBuilder> internalGetMaxIntervalFieldBuilder()
       Specifies the maximum back off interval that Envoy will allow. If a reset
       header contains an interval longer than this then it will be discarded and
       the next header will be tried. Defaults to 300 seconds.
       
      .google.protobuf.Duration max_interval = 2 [(.validate.rules) = { ... }