Class 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, java.lang.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 Detail

      • bitField0_

        private int bitField0_
      • maxInterval_

        private com.google.protobuf.Duration maxInterval_
      • maxIntervalBuilder_

        private com.google.protobuf.SingleFieldBuilder<com.google.protobuf.Duration,​com.google.protobuf.Duration.Builder,​com.google.protobuf.DurationOrBuilder> maxIntervalBuilder_
    • Constructor Detail

      • Builder

        private Builder()
      • Builder

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

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

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

        private void ensureResetHeadersIsMutable()
      • getResetHeadersList

        public java.util.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

        public RetryPolicy.RateLimitedRetryBackOff.Builder addResetHeaders​(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

        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

        public RetryPolicy.RateLimitedRetryBackOff.Builder addResetHeaders​(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

        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​(java.lang.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 java.util.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 java.util.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) = { ... }
      • 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

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

        private com.google.protobuf.SingleFieldBuilder<com.google.protobuf.Duration,​com.google.protobuf.Duration.Builder,​com.google.protobuf.DurationOrBuilder> getMaxIntervalFieldBuilder()
         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) = { ... }