public static boolean isRecoverable()

in git-server/src/main/java/jetbrains/buildServer/buildTriggers/vcs/git/GitServerUtil.java [731:766]


  public static boolean isRecoverable(@NotNull Exception e, AuthSettings authSettings, int attempt, int maxAttempts) {
    boolean attemptsLeft = attempt < maxAttempts;

    if (!(e instanceof TransportException)) return false;

    String message = e.getMessage();
    if (message == null)
      return false;
    if (message.contains("Connection timed out") ||
        message.contains("Connection time out") ||
        message.contains("Short read of block") || //TW-55869
        message.contains("Read timed out after")) //TW-68453
    {
      return attemptsLeft;
    }

    if (authSettings.doesTokenNeedRefresh() && attempt == 1)
      return true;

    Throwable cause = e.getCause();
    if (cause instanceof JSchException) {
      return attemptsLeft &&
             (
               message.contains("Session.connect: java.net.SocketException: Connection reset") ||
               message.contains("Session.connect: java.net.SocketException: Software caused connection abort") ||
               message.contains("Session.connect: java.net.SocketTimeoutException: Read timed out") ||
               message.contains("connection is closed by foreign host") ||
               message.contains("timeout: socket is not established") ||
               message.contains("java.net.UnknownHostException:") || //TW-31027
               message.contains("com.jcraft.jsch.JSchException: verify: false") || //TW-31175
               message.contains("channel is not opened.") || //TW-46052
               message.contains("Connection refused")
             ); // TW-68453
    }
    return false;
  }