private RetryInfo getRetryInfo()

in commit-status-publisher-server/src/main/java/jetbrains/buildServer/commitPublisher/CommitStatusPublisherListener.java [1070:1089]


  private RetryInfo getRetryInfo(@NotNull Throwable t, @NotNull BuildPromotion buildPromotion, @NotNull Event event, @Nullable Long lastDelay) {
    if (isRetryEnabled() && event.isRetryable() && t instanceof PublisherException && ((PublisherException)t).shouldRetry()) {
      Long firstRetry = myBuildTypeToFirstPublishFailure.get(buildPromotion.getBuildTypeId());
      long timeNow = Instant.now().toEpochMilli();
      if (firstRetry != null) {
        if (timeNow - firstRetry > maxBeforeDisablingRetry()) {
          return new RetryInfo(false, "Retry will not be attempted, because problem occurs for too long", 0);
        }
      } else {
        myBuildTypeToFirstPublishFailure.put(buildPromotion.getBuildTypeId(), timeNow);
      }

      final long newDelay = lastDelay == null ? initialRetryDelay() : lastDelay * 2;
      if (newDelay > maxRetryDelay()) {
        return new RetryInfo(false, "Retry will not be attempted, becuase max retry delay is reached", 0);
      }
      return new RetryInfo(true, String.format("Will retry in %d seconds", newDelay / 1000), newDelay);
    }
    return new RetryInfo();
  }