TW-57802 Remove unnecessary ""'git config http.sslCAInfo' command failed" warnings...
authorMikhail Khorkov <mikhail.khorkov@jetbrains.com>
Wed, 14 Nov 2018 08:07:03 +0000 (15:07 +0700)
committerMikhail Khorkov <mikhail.khorkov@jetbrains.com>
Wed, 14 Nov 2018 08:09:09 +0000 (15:09 +0700)
git-agent/src/jetbrains/buildServer/buildTriggers/vcs/git/agent/command/GetConfigCommand.java
git-agent/src/jetbrains/buildServer/buildTriggers/vcs/git/agent/command/impl/CommandUtil.java
git-agent/src/jetbrains/buildServer/buildTriggers/vcs/git/agent/command/impl/GetConfigCommandImpl.java
git-agent/src/jetbrains/buildServer/buildTriggers/vcs/git/agent/ssl/SSLInvestigator.java

index e6f80cd99388801cb925c26ae7ffd35c8e4fa9a5..a84731f241dee851aecf57ad5b6846baa733ef92 100644 (file)
@@ -27,4 +27,6 @@ public interface GetConfigCommand extends BaseCommand {
   @NotNull
   String call() throws VcsException;
 
+  @NotNull
+  String callWithIgnoreExitCode() throws VcsException;
 }
index dbb70026988534629dd34bced602bc559782e447..172e10845e2c71a9d7a0e7113b877577297eea85 100644 (file)
@@ -34,12 +34,16 @@ public class CommandUtil {
 
   @SuppressWarnings({"ThrowableResultOfMethodCallIgnored"})
   public static void checkCommandFailed(@NotNull String cmdName, @NotNull ExecResult res, String... errorsLogLevel) throws VcsException {
-    if (res.getExitCode() != 0 || res.getException() != null) {
-      commandFailed(cmdName, res);
-    }
-    if (res.getStderr().length() > 0) {
-      logMessage("Error output produced by: " + cmdName, errorsLogLevel);
-      logMessage(res.getStderr().trim(), errorsLogLevel);
+    if ("info".equals(logLevel(errorsLogLevel)) && res.getExitCode() != 0 && res.getException() == null) {
+      logMessage("'" + cmdName + "' exit code: " + res.getExitCode() + ". It is expected behaviour.", "info");
+    } else {
+      if (res.getExitCode() != 0 || res.getException() != null) {
+        commandFailed(cmdName, res);
+      }
+      if (res.getStderr().length() > 0) {
+        logMessage("Error output produced by: " + cmdName, errorsLogLevel);
+        logMessage(res.getStderr().trim(), errorsLogLevel);
+      }
     }
   }
 
@@ -82,19 +86,20 @@ public class CommandUtil {
    * @param level   level to use
    */
   private static void logMessage(String message, String... level) {
-    String theLevel;
-    if (level.length > 0) {
-      theLevel = level[0];
-    } else {
-      theLevel = "warn";
-    }
+    final String theLevel = logLevel(level);
     if (theLevel.equals("warn")) {
       Loggers.VCS.warn(message);
     } else if (theLevel.equals("debug")) {
       Loggers.VCS.debug(message);
+    } else if (theLevel.equals("info")) {
+      Loggers.VCS.info(message);
     }
   }
 
+  private static String logLevel(String... level) {
+    return level.length > 0 ? level[0] : "warn";
+  }
+
   public static ExecResult runCommand(@NotNull GitCommandLine cli, final String... errorsLogLevel) throws VcsException {
     return runCommand(cli, DEFAULT_COMMAND_TIMEOUT_SEC, errorsLogLevel);
   }
index 573efabf7cab33d883030deae050121fe8355af5..f9ea0172cb4916a8f656bd744821c762c7c33657 100644 (file)
@@ -38,9 +38,18 @@ public class GetConfigCommandImpl extends BaseCommandImpl implements GetConfigCo
 
   @NotNull
   public String call() throws VcsException {
+    return callWithLevel();
+  }
+
+  @NotNull
+  public String callWithIgnoreExitCode() throws VcsException {
+    return callWithLevel("info");
+  }
+
+  private String callWithLevel(String... logLevel) throws VcsException {
     GitCommandLine cmd = getCmd();
     cmd.addParameters("config", myName);
-    ExecResult r = CommandUtil.runCommand(cmd);
+    ExecResult r = CommandUtil.runCommand(cmd, logLevel);
     CommandUtil.failIfNotEmptyStdErr(cmd, r);
     return r.getStdout().trim();
   }
index 502d22a33fa9e47bc6b79f4238c9f4e9948985da..ba386392b2835d2794ec9700ec1c9460099feb1d 100644 (file)
@@ -156,7 +156,7 @@ public class SSLInvestigator {
 
   private void deleteSslOption(@NotNull final GitFacade gitFacade) {
     try {
-      final String previous = gitFacade.getConfig().setPropertyName("http.sslCAInfo").call();
+      final String previous = gitFacade.getConfig().setPropertyName("http.sslCAInfo").callWithIgnoreExitCode();
       if (!StringUtil.isEmptyOrSpaces(previous)) {
         /* do not need custom certificate then remove corresponding options if exists */
         gitFacade.setConfig().setPropertyName("http.sslCAInfo").unSet().call();
@@ -170,7 +170,7 @@ public class SSLInvestigator {
     try {
       gitFacade.setConfig().setPropertyName("http.sslCAInfo").setValue(path).call();
     } catch (Exception e) {
-      LOG.error("Error while setting sslCAInfo git option");
+      LOG.error("Error while setting sslCAInfo git option", e);
     }
   }