2

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のorg.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:138)
で読み取りがタイムアウトしました。 transport.SshTransport.getSession(SshTransport.java:121)
at org.eclipse.jgit.transport.TransportGitSsh $ SshFetchConnection。(TransportGitSsh.java:248)
at 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)
at com.google.gerrit.server.git.PushOp.pushVia(PushOp.java:258)
at com.google.gerrit.server .git.PushOp.runImpl(PushOp.java:213)
at com.google.gerrit.server.git.PushOp.run(PushOp.java:166)
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)
java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
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:662)


原因:com.jcraft.jsch.JSchException:Session.connect:java.net.SocketTimeoutException:org.eclipse.jgit.transportのcom.jcraft.jsch.Session.connect(Session.java:504)で読み取りがタイムアウトしまし
た。 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

secure.config:

[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を「ヒット」できたので、キーは正常にインポートされました。問題が何であるかわからないので、提案をいただければ幸いです。

4

1 に答える 1

0

例外の名前が示すようにSocketTimeoutException(およびそのドキュメントの詳細):

ソケットの読み取りまたは受け入れでタイムアウトが発生したことを通知します。

Gerrit の replication.configのドキュメントを参照してください。

remote.<name>.timeout

リモート側が応答していないと断念して宣言する前に、ネットワークの読み取りまたは書き込みが完了するのを待機する秒数。0 の場合、タイムアウトはなく、プッシュ クライアントは無期限に待機します。

タイムアウトは、ほとんどのオブジェクトを反対側に転送するのに十分な大きさにする必要があります。大規模なプロジェクトでは、特に WAN リンクでは 1 秒では短すぎる可能性がありますが、10 ~ 30 秒がはるかに妥当なタイムアウト値です。

デフォルトは 0 秒で、無期限に待機します。

値は 5 秒です。代わりに、より大きな値で試すことができます。

(この問題は間接的に JSch に関連しているだけです。JSchSession.connect(int)は単純にタイムアウト パラメータを取得し、それを作成するソケットに渡します。これは、このタイムアウトが JSch のどの単位であるか (秒またはミリ秒) を文書化する必要があることを思い出させてくれます。)

于 2011-09-20T00:24:22.753 に答える