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();
}