static Retrier defaultAwsRetrier()

in aws-core-common/src/main/java/jetbrains/buildServer/util/amazon/retry/AmazonRetrier.java [28:53]


  static Retrier defaultAwsRetrier(final int retriesNum, final int retryDelay, @NotNull final Logger logger) {
    return Retrier.withAttempts(retriesNum + 1, Retrier.DelayStrategy.linearBackOff(retryDelay))
                  .registerListener(new LoggingRetrierListener(logger))
                  .registerListener(
                    new AbortingListener(ExecutionException.class, SSLException.class, UnknownHostException.class, SocketException.class, InterruptedIOException.class, InterruptedException.class, IOException.class) {
                      @Override
                      public <T> void onFailure(@NotNull Callable<T> callable, int retry, @NotNull Exception e) {
                        if (e instanceof InterruptedException) {
                          Thread.currentThread().interrupt();
                          return;
                        }

                        final RecoverableException recoverableException = ExceptionUtil.getCause(e, RecoverableException.class);
                        if (recoverableException != null && recoverableException.isRecoverable()) {
                          return;
                        }

                        final SdkClientException sdkClientException = ExceptionUtil.getCause(e, SdkClientException.class);
                        if (sdkClientException != null && sdkClientException.retryable()) {
                          return;
                        }

                        super.onFailure(callable, retry, e);
                      }
                    });
  }