Class RetryOptions.Builder

java.lang.Object
io.temporal.common.RetryOptions.Builder
Enclosing class:
RetryOptions

public static final class RetryOptions.Builder extends Object
  • Method Details

    • setInitialInterval

      public RetryOptions.Builder setInitialInterval(Duration initialInterval)
      Interval of the first retry. If coefficient is 1.0 then it is used for all retries. Required.
    • setBackoffCoefficient

      public RetryOptions.Builder setBackoffCoefficient(double backoffCoefficient)
      Coefficient used to calculate the next retry interval. The next retry interval is previous interval multiplied by this coefficient. Must be 1 or larger. Default is 2.0.
      Throws:
      IllegalArgumentException - if backoffCoefficient is less than 1.0
    • setMaximumAttempts

      public RetryOptions.Builder setMaximumAttempts(int maximumAttempts)
      When exceeded the amount of attempts, stop. Even if expiration time is not reached.
      Default is unlimited.
      Parameters:
      maximumAttempts - Maximum number of attempts. Default will be used if set to 0.
      Throws:
      IllegalArgumentException - if maximumAttempts is less than 0
    • setMaximumInterval

      public RetryOptions.Builder setMaximumInterval(Duration maximumInterval)
      Maximum interval between retries. Exponential backoff leads to interval increase. This value is the cap of the increase.
      Default is 100x of initial interval. Can't be less than setInitialInterval(Duration)
      Parameters:
      maximumInterval - the maximum interval value. Default will be used if set to null.
      Throws:
      IllegalArgumentException - if maximumInterval is not null and not positive
    • setDoNotRetry

      public RetryOptions.Builder setDoNotRetry(String... doNotRetry)
      List of application failures types to not retry.

      An application failure is represented as ApplicationFailure. The type of the failure is stored in the ApplicationFailure.getType() property. An ApplicationFailure instance is created through ApplicationFailure.newFailure(String, String, Object...). An ApplicationFailure created through ApplicationFailure.newNonRetryableFailure(String, String, Object...) will have ApplicationFailure.isNonRetryable() property set to true which means that it is not retried even if the type of failure is not included into DoNotRetry list.

      If an activity or workflow throws any exception which is not ApplicationFailure then the exception is converted to ApplicationFailure with the fully qualified name of the exception as type value.

      Note that activity failures are wrapped into ActivityFailure exception. So if an activity failure is not handled the workflow retry policy is going to see ActivityFailure which is always retryable, not the original exception. The same way a child workflow failure is wrapped into ChildWorkflowFailure.

      Error and CanceledFailure are never retried and are not even passed to this filter.

    • build

      public RetryOptions build()
      Build RetryOptions without performing validation as validation should be done after merging with MethodRetry.
    • validateBuildWithDefaults

      public RetryOptions validateBuildWithDefaults()
      Validates property values and builds RetryOptions with default values.