in git-server/src/main/java/jetbrains/buildServer/buildTriggers/vcs/git/command/impl/GitRepoOperationsImpl.java [220:264]
private Map<String, Ref> getRemoteRefsJGit(@NotNull Repository db, @NotNull GitVcsRoot gitRoot) throws VcsException {
try {
return IOGuard.allowNetworkCall(() -> {
try {
return Retry.retry(new Retry.Retryable<Map<String, Ref>>() {
@Override
public boolean requiresRetry(@NotNull final Exception e, int attempt, int maxAttempts) {
return GitServerUtil.isRecoverable(e, gitRoot.getAuthSettings(), attempt, maxAttempts);
}
@Nullable
@Override
public Map<String, Ref> call() throws Exception {
final long start = System.currentTimeMillis();
try (
final Transport transport = myTransportFactory.createTransport(db, gitRoot.getRepositoryFetchURL().get(), gitRoot.getAuthSettings(), myConfig.getRepositoryStateTimeoutSeconds());
final FetchConnection connection = transport.openFetch()) {
return connection.getRefsMap();
} catch (NotSupportedException nse) {
throw friendlyNotSupportedException(gitRoot, nse);
} catch (WrongPassphraseException e) {
throw new VcsException(e.getMessage(), e);
} finally {
final long finish = System.currentTimeMillis();
PERFORMANCE_LOG.debug("[getRemoteRefs] repository: " + LogUtil.describe(gitRoot) + ", took " + (finish - start) + "ms");
}
}
@NotNull
@Override
public Logger getLogger() {
return Loggers.VCS;
}
}, myConfig.getConnectionRetryIntervalMillis(), myConfig.getConnectionRetryAttempts());
} catch (TransportException t) {
throw friendlyTransportException(t, gitRoot);
}
});
} catch (Exception e) {
if (e instanceof VcsException) {
throw (VcsException) e;
}
else throw new VcsException(e);
}
}