Hello,
We've been noticing a lot of failures where Hudson is unable to clone
from Gerrit. I'm not sure if this is a problem on the Hudson or
Gerrit side. Here's the scenarios we are experiencing though.
Apologies for the length of this:
1) Hudson will start a job, initiate cloning a repository, and then
the clone will hang forever. On the Gerrit side, I can see that there
is a git-upload-pack thread running for the clone, but it seems Hudson
never receives anything, and the thread runs forever, or until the
Hudson build is cancelled. These start to eat into the
sshd.batchThreads quickly, preventing other builds from starting.
2) Clones fail with the following Hudson output:
$ "C:\Program Files\Git\cmd\git.cmd" clone -o origin
ssh://
gerrit.foo.com:29418/foobar/base C:\hudson\workspace\Gerrit
ERROR: Error cloning remote repo 'origin' : Could not clone
ssh://
gerrit.foo.com:29418/foobar/base
ERROR: Cause: Error performing C:\Program Files\Git\cmd\git.cmd clone -
o origin ssh://
gerrit.foo.com:29418/foobar/base C:\hudson\workspace
\Gerrit
Command returned status code 128: fatal: internal server error
fatal: early EOF
Cloning into C:\hudson\workspace\Gerrit...
fatal: The remote end hung up unexpectedly
fatal: index-pack failed
On the Gerrit server, I see the following:
[2010-12-02 13:16:25,772] ERROR com.google.gerrit.sshd.BaseCommand :
Internal server error (user buildy account 1000283) during git-upload-
pack '/foobar/base'
java.io.FileNotFoundException: /data/gerrit/repositories/foobar/
base.git/objects/pack/
pack-38a7a105e2d9760a5d8f844f2de08cc49b1d01c6.idx (No such file or
directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at org.eclipse.jgit.lib.PackIndex.open(PackIndex.java:87)
at org.eclipse.jgit.lib.PackFile.idx(PackFile.java:137)
at org.eclipse.jgit.lib.PackFile.getReverseIdx(PackFile.java:
523)
at
org.eclipse.jgit.lib.PackFile.findObjectForOffset(PackFile.java:253)
at org.eclipse.jgit.lib.PackFile.copyRawData(PackFile.java:
293)
at
org.eclipse.jgit.lib.PackedObjectLoader.copyRawData(PackedObjectLoader.java:
162)
at org.eclipse.jgit.lib.PackWriter.writeObject(PackWriter.java:
726)
at org.eclipse.jgit.lib.PackWriter.writeObject(PackWriter.java:
709)
at
org.eclipse.jgit.lib.PackWriter.writeObjects(PackWriter.java:694)
at org.eclipse.jgit.lib.PackWriter.writePack(PackWriter.java:
595)
at
org.eclipse.jgit.transport.UploadPack.sendPack(UploadPack.java:587)
at
org.eclipse.jgit.transport.UploadPack.service(UploadPack.java:334)
at
org.eclipse.jgit.transport.UploadPack.upload(UploadPack.java:296)
at com.google.gerrit.sshd.commands.Upload.runImpl(Upload.java:
45)
at
com.google.gerrit.sshd.AbstractGitCommand.service(AbstractGitCommand.java:
104)
at com.google.gerrit.sshd.AbstractGitCommand.access
$000(AbstractGitCommand.java:34)
at com.google.gerrit.sshd.AbstractGitCommand
$1.run(AbstractGitCommand.java:69)
at com.google.gerrit.sshd.BaseCommand
$TaskThunk.run(BaseCommand.java:395)
at java.util.concurrent.Executors
$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask
$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor
$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor
$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)
at com.google.gerrit.server.git.WorkQueue
$Task.run(WorkQueue.java:324)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
There are two other Gerrit internal server errors that I'm seeing, but
I don't know what is happening on the client side (yet):
3) [2010-12-07 12:08:55,607] WARN
org.apache.sshd.server.session.ServerSession : Exception caught
java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
at sun.nio.ch.IOUtil.read(IOUtil.java:206)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:
236)
at
org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:
202)
at
org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:
42)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:
620)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:
598)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:
587)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.access
$400(AbstractPollingIoProcessor.java:61)
at org.apache.mina.core.polling.AbstractPollingIoProcessor
$Processor.run(AbstractPollingIoProcessor.java:969)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:
64)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
[2010-12-07 12:09:13,071] ERROR com.google.gerrit.sshd.BaseCommand :
Internal server error (user buildy account 1000283) during git-upload-
pack '/foobar/base'
java.nio.channels.ClosedByInterruptException
at
java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:
184)
at sun.nio.ch.FileChannelImpl.size(FileChannelImpl.java:317)
at org.eclipse.jgit.util.IO.readFully(IO.java:97)
at org.eclipse.jgit.util.IO.readFully(IO.java:76)
at
org.eclipse.jgit.lib.UnpackedObjectLoader.<init>(UnpackedObjectLoader.java:
83)
at
org.eclipse.jgit.lib.ObjectDirectory.openObject2(ObjectDirectory.java:
285)
at
org.eclipse.jgit.lib.ObjectDatabase.openObjectImpl2(ObjectDatabase.java:
237)
at
org.eclipse.jgit.lib.ObjectDatabase.openObject(ObjectDatabase.java:
202)
at org.eclipse.jgit.lib.Repository.openObject(Repository.java:
485)
at
org.eclipse.jgit.lib.PackWriter.writeWholeObjectDeflate(PackWriter.java:
761)
at org.eclipse.jgit.lib.PackWriter.writeObject(PackWriter.java:
733)
at
org.eclipse.jgit.lib.PackWriter.writeObjects(PackWriter.java:694)
at org.eclipse.jgit.lib.PackWriter.writePack(PackWriter.java:
595)
at
org.eclipse.jgit.transport.UploadPack.sendPack(UploadPack.java:587)
at
org.eclipse.jgit.transport.UploadPack.service(UploadPack.java:334)
at
org.eclipse.jgit.transport.UploadPack.upload(UploadPack.java:296)
at com.google.gerrit.sshd.commands.Upload.runImpl(Upload.java:
45)
at
com.google.gerrit.sshd.AbstractGitCommand.service(AbstractGitCommand.java:
104)
at com.google.gerrit.sshd.AbstractGitCommand.access
$000(AbstractGitCommand.java:34)
at com.google.gerrit.sshd.AbstractGitCommand
$1.run(AbstractGitCommand.java:69)
at com.google.gerrit.sshd.BaseCommand
$TaskThunk.run(BaseCommand.java:395)
at java.util.concurrent.Executors
$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask
$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor
$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor
$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)
at com.google.gerrit.server.git.WorkQueue
$Task.run(WorkQueue.java:324)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
4) [2010-12-07 14:38:58,540] WARN
org.apache.sshd.server.session.ServerSession : Exception caught
java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
at sun.nio.ch.IOUtil.read(IOUtil.java:206)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:
236)
at
org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:
202)
at
org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:
42)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:
620)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:
598)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:
587)
at
org.apache.mina.core.polling.AbstractPollingIoProcessor.access
$400(AbstractPollingIoProcessor.java:61)
at org.apache.mina.core.polling.AbstractPollingIoProcessor
$Processor.run(AbstractPollingIoProcessor.java:969)
at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:
64)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
[2010-12-07 14:38:58,541] ERROR com.google.gerrit.sshd.BaseCommand :
Internal server error (user buildy account 1000283) during git-upload-
pack '/foobar/base'
org.apache.sshd.common.SshException
at
org.apache.sshd.common.channel.ChannelOutputStream.flush(ChannelOutputStream.java:
128)
at
org.apache.sshd.common.channel.ChannelOutputStream.write(ChannelOutputStream.java:
75)
at
org.eclipse.jgit.transport.SideBandOutputStream.writeBuffer(SideBandOutputStream.java:
154)
at
org.eclipse.jgit.transport.SideBandOutputStream.write(SideBandOutputStream.java:
134)
at
org.eclipse.jgit.lib.PackOutputStream.write(PackOutputStream.java:77)
at
java.util.zip.CheckedOutputStream.write(CheckedOutputStream.java:56)
at org.eclipse.jgit.lib.PackFile.copyToStream(PackFile.java:
335)
at org.eclipse.jgit.lib.PackFile.copyRawData(PackFile.java:
290)
at
org.eclipse.jgit.lib.PackedObjectLoader.copyRawData(PackedObjectLoader.java:
162)
at org.eclipse.jgit.lib.PackWriter.writeObject(PackWriter.java:
726)
at
org.eclipse.jgit.lib.PackWriter.writeObjects(PackWriter.java:694)
at org.eclipse.jgit.lib.PackWriter.writePack(PackWriter.java:
595)
at
org.eclipse.jgit.transport.UploadPack.sendPack(UploadPack.java:587)
at
org.eclipse.jgit.transport.UploadPack.service(UploadPack.java:334)
at
org.eclipse.jgit.transport.UploadPack.upload(UploadPack.java:296)
at com.google.gerrit.sshd.commands.Upload.runImpl(Upload.java:
45)
at
com.google.gerrit.sshd.AbstractGitCommand.service(AbstractGitCommand.java:
104)
at com.google.gerrit.sshd.AbstractGitCommand.access
$000(AbstractGitCommand.java:34)
at com.google.gerrit.sshd.AbstractGitCommand
$1.run(AbstractGitCommand.java:69)
at com.google.gerrit.sshd.BaseCommand
$TaskThunk.run(BaseCommand.java:395)
at java.util.concurrent.Executors
$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask
$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor
$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor
$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:207)
at com.google.gerrit.server.git.WorkQueue
$Task.run(WorkQueue.java:324)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at
org.apache.sshd.common.channel.Window.waitForSpace(Window.java:146)
at
org.apache.sshd.common.channel.ChannelOutputStream.flush(ChannelOutputStream.java:
104)
... 28 more
These last two errors are not only occurring with Hudson builds;
regular git operations that require talking to the Gerrit server will
cause these as well.
I'd appreciate any insight or suggestions that can be given regarding
these errors. I'll try and find the right Hudson list to cross-post
this on. Thanks.
-Nick