We've run into a problem with replicas under load on Gerrit v3.6.1 throwing index out of bounds exceptions and killing ssh connections. The heap eventually climbs to death.
Has anyone else seen similar or has an idea of what's gone wrong?
Have we missed something in the upgrade, or a bad configuration?
[SshCommandDestroy-238] ERROR com.google.gerrit.pgm.Daemon : Thread SshCommandDestroy-238 threw exception
java.lang.IndexOutOfBoundsException: Index 2 out of bounds for length 2
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.get(ArrayList.java:459)
at java.base/java.util.Collections$UnmodifiableList.get(Collections.java:1310)
at com.google.gerrit.sshd.SshLogJsonLayout$SshJsonLogEntry.<init>(SshLogJsonLayout.java:90)
at com.google.gerrit.sshd.SshLogJsonLayout.toJsonLogEntry(SshLogJsonLayout.java:40)
at com.google.gerrit.util.logging.JsonLayout.format(JsonLayout.java:36)
at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:303)
at org.apache.log4j.DailyRollingFileAppender.subAppend(DailyRollingFileAppender.java:353)
at org.apache.log4j.WriterAppender.append(WriterAppender.java:156)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:232)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
at org.apache.log4j.AsyncAppender.append(AsyncAppender.java:143)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:232)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
at org.apache.log4j.AsyncAppender.append(AsyncAppender.java:143)
at com.google.gerrit.sshd.SshLog.onExecute(SshLog.java:217)
at com.google.gerrit.sshd.CommandFactoryProvider$Trampoline.log(CommandFactoryProvider.java:236)
at com.google.gerrit.sshd.CommandFactoryProvider$Trampoline$2.onExit(CommandFactoryProvider.java:196)
at com.google.gerrit.sshd.commands.Upload.onExit(Upload.java:117)
at com.google.gerrit.sshd.BaseCommand$TaskThunk.cancel(BaseCommand.java:467)
at com.google.gerrit.server.git.WorkQueue$Task.cancel(WorkQueue.java:549)
at com.google.gerrit.sshd.BaseCommand.destroy(BaseCommand.java:190)
at com.google.gerrit.sshd.DispatchCommand.destroy(DispatchCommand.java:154)
at com.google.gerrit.sshd.CommandFactoryProvider$Trampoline.onDestroy(CommandFactoryProvider.java:254)
at com.google.gerrit.sshd.CommandFactoryProvider$Trampoline.lambda$destroy$0(CommandFactoryProvider.java:245)
at com.google.gerrit.server.logging.LoggingContextAwareRunnable.run(LoggingContextAwareRunnable.java:113)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Happy to hear any ideas. There really isn't anything else in the logs, and v3.5.2 was running fine.