Gerrit для репликации GitHub: JSCH проблемы - PullRequest
2 голосов
/ 19 сентября 2011

Попытка настроить репликацию от 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.itTransport.jT $.(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 $ ScheduledFac..java: 324)
в java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (ThreadPoolExecutor.java:886)
в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor )java1022 * at java.lang.Thread.run (Thread.java:662)

Вызывается: com.jcraft.jsch.JSchException: Session.connect: java.net.SocketTimeoutException: чтение истекло время ожидания
at com.jcraft.jsch.Session.connect (Session.java: 504)
at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession (JschConfigSessionFactory.java:128)

Мои файлы конфигурации имеют следующий вид:

репликация.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, чтобы ключи были импортированы нормально, не уверен, в чем проблема, любые предложения приветствуются.

1 Ответ

0 голосов
/ 20 сентября 2011

Как следует из названия исключения SocketTimeoutException (и его подробности документации ):

Сигналы о том, что тайм-аут произошел при чтении или принятии сокета.

Поиск в документации replication.config Геррита :

дистанционный. .timeout

Количество секунд ожидания завершения чтения или записи по сети, прежде чем сдать и объявить удаленную сторону не отвечает. Если 0, тайм-аут не задан, и принудительный клиент ожидает неопределенное время.

Тайм-аут должен быть достаточно большим, чтобы в основном переносить объекты на другую сторону. 1 секунда может быть слишком маленькой для более крупных проектов, особенно по каналу глобальной сети, тогда как 10-30 секунд - гораздо более разумное значение времени ожидания.

По умолчанию 0 секунд, ждать бесконечно.

Ваше значение составляет 5 секунд, вместо этого вы можете попробовать его с большим значением.

(Проблема только косвенно связана с JSch - JSch Session.connect(int) просто примет параметр тайм-аута и передаст его в Socket, который он создает. Это напоминает мне , что я должен задокументировать, какая единица измерения - это время ожидания для JSch - секунды или миллисекунды.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...