J'ai la structure d'appel suivante:
- Jenkins court
fab -Huser@host set_repository_commit_hash:123abc
. set_repository_commit_hash
fonctionnegit fetch
avecpty = False
.- Le processus enfant
ssh git@github.com git-upload-pack 'user/repository.git'
ne se termine jamais.
J'ai essayé de courir git fetch
dans un clone local et cela réussit, mais courir ssh git@github.com git-upload-pack 'user/repository.git'
retourne juste ce qui suit et se bloque:
00ab84249d3bb20930c185c08848c60b71f7b28990d6 HEADmulti_ack thin-pack side-band side-band-64k ofs-delta shallow no-progress include-tag multi_ack_detailed agent=git/1.8.4
0041cb34b1c8ca75d478df38c794fc15c5f01cc6377e refs/heads/branch_name
004012577068adf47015001bfa0cff9386d6cdf497ce refs/heads/[...]
003f84249d3bb20930c185c08848c60b71f7b28990d6 refs/heads/master
[a couple more lines like the ones above, then:]
0000
Est-ce un problème connu de SSH / Git / Fabric / Jenkins?
Je l'ai strace
fait, mais je n'ai pas enregistré la session. Je crois qu'il était coincé sur un read
.
Liens éventuellement pertinents:
- Problème Jenkins 14752: interrogation SCM / nombre maximal d'interrogations simultanées = 1 blocage de l'interrogation github
- Pourquoi git-upload-pack (pendant le clone git) se bloquerait-il?
- problème de tortoisegit 1880: la récupération de tortoisegit se bloque en raison de tortoisegitplink en cours d'exécution / sans fin (en particulier le commentaire # 7 )
- Quel est ce processus aléatoire sans fin de «git-upload-pack»?
git-upload-pack
est censé faire, l'AFAICT. Il vous attend pour parler du protocole git fetch-pack et lui dire quelles choses envoyer (essayez de l'exécuter sur un référentiel local, vous obtiendrez la même sortie).
git clone
(depuis github) fonctionne-t-il sur l'hôte que Jenkins essaie de récupérer? Je soupçonne que ce ne sera pas le cas, et vous avez probablement un problème de découverte Path MTU provoqué par un pare-feu cassé (qui pourrait être n'importe où sur le chemin - pas seulement de votre côté.)
strace -p <pid of hung git daemon>
dit qu'il bloque?