summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Miller <marco.mmiller@gmail.com>2020-12-14 19:27:50 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2020-12-14 19:27:50 +0000
commit9775933a9641d5fe4fdc6790f294c137d4e9f6d0 (patch)
tree4989890ccf39f331ea5768542985f877f95044c9
parent9c7c609a5fc0f8d934a80c3c4e54ea5638c7b748 (diff)
parent5e4a4e7e4855bf1aa1166db55bf0d43c3a8f10a1 (diff)
Merge "Avoid logging "length=0" exception" into stable-3.1
-rw-r--r--java/com/google/gerrit/sshd/BaseCommand.java17
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);
}