【发布时间】:2011-09-19 14:18:09
【问题描述】:
尝试设置从 gerrit 到我的 github 存储库的复制。获取此堆栈跟踪:
[2011-09-20 00:11:58,470] 错误 com.google.gerrit.server.git.PushReplication:无法复制到 git@github.com:myuser/myrepo.git
org.eclipse.jgit.errors.TransportException: git@github.com:myuser/myrepo.git: Session.connect: java.net.SocketTimeoutException: 读取超时
在 org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:138)
在 org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:121)
在 org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.(TransportGitSsh.java:248)
在 org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:147)
在 com.google.gerrit.server.git.PushOp.listRemote(PushOp.java:358)
在 com.google.gerrit.server.git.PushOp.generateUpdates(PushOp.java:312)
在 com.google.gerrit.server.git.PushOp.pushVia(PushOp.java:258)
在 com.google.gerrit.server.git.PushOp.runImpl(PushOp.java:213)
在 com.google.gerrit.server.git.PushOp.run(PushOp.java:166)
在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
在 java.util.concurrent.FutureTask.run(FutureTask.java:138)
在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
在 com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:324)
在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
在 java.lang.Thread.run(Thread.java:662)原因:com.jcraft.jsch.JSchException:Session.connect:java.net.SocketTimeoutException:读取超时
在 com.jcraft.jsch.Session.connect(Session.java:504)
在 org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:128)
我的配置文件如下:
replication.config:
[remote "github"]
url = git@github.com:myuser/${name}.git
push = +refs/heads/*:refs/heads/*
push = +refs/tags/*:refs/tags/*
timeout = 5
replicationDelay = 0
authGroup = Administrators
安全配置:
[database]
password = secret
[ssh]
file = /home/gerrit2/.ssh/config
.ssh/config:
Host github.com:
IdentityFile ~/.ssh/id_rsa
PreferredAuthentications publickey
我试着跑了
ssh -i etc/ssh_host_dsa_key git@github.com
ssh -i etc/ssh_host_rsa_key git@github.com
ssh -i ~/.ssh/id_rsa git@github.com
ssh -i ~/.ssh/id_dsa git@github.com
并且能够“点击”github,因此密钥导入正常,不确定问题是什么, 任何建议表示赞赏。
【问题讨论】:
-
A SocketTimeoutException 表示套接字读取或接受发生超时。您是否尝试增加超时值?
-
谢谢,我之前应该试过的!在 replication.config 中将超时设置为 60(而不是 5)后,效果很好。
-
我没想到解决方案会这么简单,我只是想排除一个可能的原因。我将此评论(带有一些附加信息)作为答案。如果它解决了您的问题,请随意接受(使用绿色复选标记按钮)。