Class RetryingTaskExecutor<T>

java.lang.Object
com.atlassian.bamboo.executor.RetryingTaskExecutor<T>

public class RetryingTaskExecutor<T> extends Object
Helper class that allows you to easily run a task that is likely to fail multiple times. It will attempt to rerun the task using a backing off algorithm or constant time. By default backing off is used with 1000ms initial delay and 10 max retries. Delays are capped at 60s per run. The last attempt will be at least 4 minutes after the first call.
  • Field Details

    • DEFAULT_MAX_RETRY_DELAY

      public static final Duration DEFAULT_MAX_RETRY_DELAY
    • DEFAULT_MAX_RETRIES

      public static final int DEFAULT_MAX_RETRIES
      See Also:
    • DEFAULT_INITIAL_RETRY_DELAY

      public static final Duration DEFAULT_INITIAL_RETRY_DELAY
    • DEFAULT_BACK_OFF_MULTIPLIER

      public static final int DEFAULT_BACK_OFF_MULTIPLIER
      See Also:
    • objectToReturn

      protected volatile T objectToReturn
  • Constructor Details

    • RetryingTaskExecutor

      public RetryingTaskExecutor(Duration initialRetryDelay, Duration maxRetryDelay, int maxRetries, long backOffMultiplier, boolean useExponentialBackOff, boolean rethrowLastException)
    • RetryingTaskExecutor

      public RetryingTaskExecutor(Duration initialRetryDelay, int maxRetries)
    • RetryingTaskExecutor

      public RetryingTaskExecutor(int maxRetries, boolean rethrowLastException)
    • RetryingTaskExecutor

      public RetryingTaskExecutor(Duration initialRetryDelay, int maxRetries, boolean useExponentialBackOff)
    • RetryingTaskExecutor

      public RetryingTaskExecutor()
    • RetryingTaskExecutor

      @Deprecated public RetryingTaskExecutor(long initialRetryDelayMs, long maxRetryDelay, int maxRetries, long backOffMultiplier, boolean useExponentialBackOff, boolean rethrowLastException)
    • RetryingTaskExecutor

      @Deprecated public RetryingTaskExecutor(long initialRetryDelayMs, int maxRetries)
      Deprecated.
    • RetryingTaskExecutor

      @Deprecated public RetryingTaskExecutor(long initialRetryDelayMs, int maxRetries, boolean useExponentialBackOff)
  • Method Details

    • runTask

      public void runTask(@NotNull @NotNull Callable<T> task)
    • runTask

      public void runTask(String taskName, @NotNull @NotNull Callable<T> callable)
    • getObjectToReturn

      public T getObjectToReturn()
    • retry

      @Deprecated public static <T> T retry(String message, int retries, long initialRetryDelayMs, Callable<T> call)
      Deprecated.
    • retry

      public static <T> T retry(String message, int retries, Duration initialRetryDelay, Callable<T> call)
      Shortcut method that retries the callable up to a certain number of times. The retry will rethrow the last exception it catches.
      Type Parameters:
      T - what object to return
      Parameters:
      message -
      retries -
      initialRetryDelay -
      call -
      Returns:
    • retry

      @Deprecated public static <T> T retry(@NotNull @NotNull String message, int retries, long initialRetryDelayMs, @NotNull @NotNull Callable<T> call, @NotNull com.google.common.base.Predicate<Exception> shouldRetry)
    • retry

      public static <T> T retry(@NotNull @NotNull String message, int retries, Duration initialRetryDelay, @NotNull @NotNull Callable<T> call, @NotNull @NotNull Predicate<Exception> shouldRetry)
    • randomInitialDelay

      public static Duration randomInitialDelay()