diff --git a/pom.xml b/pom.xml
index 4c0539cc3..a5c28734d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,7 +51,7 @@
1.625.3
false
true
- 3.0.2
+ 3.0.5
1
7
1.120
diff --git a/src/main/java/com/cloudbees/jenkins/GitHubRepositoryName.java b/src/main/java/com/cloudbees/jenkins/GitHubRepositoryName.java
index 99e941579..66cccc0b0 100644
--- a/src/main/java/com/cloudbees/jenkins/GitHubRepositoryName.java
+++ b/src/main/java/com/cloudbees/jenkins/GitHubRepositoryName.java
@@ -20,6 +20,7 @@
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
import java.io.IOException;
+import java.net.UnknownHostException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -64,6 +65,9 @@ public class GitHubRepositoryName {
Pattern.compile("ssh://(?:git@)?([^/]+)/([^/]+)/([^/]+)/?")
};
+ private static final int MAX_RETRIES = 3;
+ private static final int BACKOFF_MILLIS = 50;
+
/**
* Create {@link GitHubRepositoryName} from URL
*
@@ -223,12 +227,25 @@ private static Function toGHRepository(final GitHubReposit
return new NullSafeFunction() {
@Override
protected GHRepository applyNullSafe(@Nonnull GitHub gitHub) {
- try {
- return gitHub.getRepository(format("%s/%s", repoName.getUserName(), repoName.getRepositoryName()));
- } catch (IOException e) {
- LOGGER.warn("Failed to obtain repository {}", this, e);
- return null;
+ int mtries = 0;
+ while (mtries < MAX_RETRIES) {
+ try {
+ return gitHub.getRepository(format("%s/%s", repoName.getUserName(),
+ repoName.getRepositoryName()));
+ } catch (UnknownHostException e) {
+ LOGGER.warn("Failed to resolve repository {}", this, e);
+ mtries++;
+ try {
+ Thread.sleep(BACKOFF_MILLIS * mtries);
+ } catch (InterruptedException ex) {
+ LOGGER.error("{}", this, ex);
+ }
+ } catch (IOException e) {
+ LOGGER.warn("Failed to obtain repository {}", this, e);
+ return null;
+ }
}
+ return null;
}
};
}