diff options
author | Marco Miller <marco.mmiller@gmail.com> | 2020-12-14 19:27:50 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2020-12-14 19:27:50 +0000 |
commit | 9775933a9641d5fe4fdc6790f294c137d4e9f6d0 (patch) | |
tree | 4989890ccf39f331ea5768542985f877f95044c9 | |
parent | 9c7c609a5fc0f8d934a80c3c4e54ea5638c7b748 (diff) | |
parent | 5e4a4e7e4855bf1aa1166db55bf0d43c3a8f10a1 (diff) |
Merge "Avoid logging "length=0" exception" into stable-3.1
-rw-r--r-- | java/com/google/gerrit/sshd/BaseCommand.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/java/com/google/gerrit/sshd/BaseCommand.java b/java/com/google/gerrit/sshd/BaseCommand.java index a027dd197d..85d9eb24bd 100644 --- a/java/com/google/gerrit/sshd/BaseCommand.java +++ b/java/com/google/gerrit/sshd/BaseCommand.java @@ -51,6 +51,7 @@ import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.StringWriter; import java.nio.charset.Charset; +import java.util.Arrays; import java.util.concurrent.Future; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.atomic.AtomicReference; @@ -356,7 +357,7 @@ public abstract class BaseCommand implements Command { } m.append(" during "); m.append(context.getCommandLine()); - logger.atSevere().withCause(e).log(m.toString()); + logCauseIfRelevant(e, m); } if (e instanceof Failure) { @@ -383,6 +384,20 @@ public abstract class BaseCommand implements Command { return 128; } + private void logCauseIfRelevant(Throwable e, StringBuilder message) { + String zeroLength = "length=0"; + String streamAlreadyClosed = "stream is already closed"; + boolean isZeroLength = false; + + if (streamAlreadyClosed.equals(e.getMessage())) { + StackTraceElement[] stackTrace = e.getStackTrace(); + isZeroLength = Arrays.stream(stackTrace).anyMatch(s -> s.toString().contains(zeroLength)); + } + if (!isZeroLength) { + logger.atSevere().withCause(e).log(message.toString()); + } + } + protected UnloggedFailure die(String msg) { return new UnloggedFailure(1, "fatal: " + msg); } |