Hudson lancement de Windows esclave de service provoque SmbException
Question
Nous venons d'acquérir trois nouveaux esclaves pour construire Hudson , qui sont en cours d'exécution x64 Windows XP. Nous allons avoir des problèmes à ceux-ci que le déploiement nous n'avons pas vu auparavant (nous avons deux autres machines XP32 déjà asservies).
Lorsque nous avons d'abord redémarrer le serveur, ou juste après le redémarrage du service du serveur, le journal du nœud sur hudson affiche les éléments suivants (nom de domaine a été modifié pour protéger les innocents):
Connecting to beast.example.com Copying slave.jar The parameter is incorrect. jcifs.smb.SmbException: The parameter is incorrect. at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:542) at jcifs.smb.SmbTransport.send(SmbTransport.java:644) at jcifs.smb.SmbSession.sessionSetup(SmbSession.java:371) at jcifs.smb.SmbSession.send(SmbSession.java:235) at jcifs.smb.SmbTree.treeConnect(SmbTree.java:161) at jcifs.smb.SmbFile.doConnect(SmbFile.java:858) at jcifs.smb.SmbFile.connect(SmbFile.java:901) at jcifs.smb.SmbFile.connect0(SmbFile.java:827) at jcifs.smb.SmbFile.open0(SmbFile.java:917) at jcifs.smb.SmbFile.open(SmbFile.java:951) at jcifs.smb.SmbFileOutputStream.(SmbFileOutputStream.java:142) at jcifs.smb.SmbFileOutputStream.(SmbFileOutputStream.java:97) at jcifs.smb.SmbFileOutputStream.(SmbFileOutputStream.java:67) at jcifs.smb.SmbFile.getOutputStream(SmbFile.java:2793) at hudson.os.windows.ManagedWindowsServiceLauncher.copySlaveJar(ManagedWindowsServiceLauncher.java:198) at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:152) at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:175) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) at java.util.concurrent.FutureTask.run(FutureTask.java:123) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676) at java.lang.Thread.run(Thread.java:613)
Sur toute tentative ultérieure de "service esclave de lancement", nous obtenons:
Connecting to beast.example.com Copying slave.jar 0xC0000205 jcifs.smb.SmbException: 0xC0000205 at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:542) at jcifs.smb.SmbTransport.send(SmbTransport.java:644) at jcifs.smb.SmbSession.send(SmbSession.java:242) at jcifs.smb.SmbTree.send(SmbTree.java:111) at jcifs.smb.SmbFile.send(SmbFile.java:729) at jcifs.smb.SmbFile.open0(SmbFile.java:934) at jcifs.smb.SmbFile.open(SmbFile.java:951) at jcifs.smb.SmbFileOutputStream.(SmbFileOutputStream.java:142) at jcifs.smb.SmbFileOutputStream.(SmbFileOutputStream.java:97) at jcifs.smb.SmbFileOutputStream.(SmbFileOutputStream.java:67) at jcifs.smb.SmbFile.getOutputStream(SmbFile.java:2793) at hudson.os.windows.ManagedWindowsServiceLauncher.copySlaveJar(ManagedWindowsServiceLauncher.java:198) at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:152) at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:175) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) at java.util.concurrent.FutureTask.run(FutureTask.java:123) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676) at java.lang.Thread.run(Thread.java:613)
Il semble que la samba elle-même, pas d'Hudson, peut-être la question. Nous avons les adhésions du groupe revérifié et les autorisations de répertoire C: \ hudson et ils sont identiques aux deux autres esclaves
.Utilisation smbclient du MacOSX qui est en cours d'exécution en fait Tomcat + Hudson (mais n'exécute pas construit), je suis en mesure d'obtenir une réponse étrange une tentative:
smb: \hudson\> get hudson-slave.exe NT_STATUS_INSUFF_SERVER_RESOURCES opening remote file \hudson\hudson-slave.exe
Googling autour de suggérer une IRPStackSize problème pourrait être le coupable, mais jacking que jusqu'à 5 à un temps (éventuellement 50 = 0x32) et le redémarrage du service serveur ne semble pas aider.
En aparté, le lancement client JNLP fonctionne très bien, même si nous préférerions avoir en tant que service.
La version Hudson est 1.323, par la voie (un seul derrière, rien dans le changelog semble particulièrement pertinent).
La solution
On dirait que JCIFS peut avoir une solution pour cela. D'un collègue de travail:
"jcifs-1.3.10 released / Bugfix for SmbException: The parameter is incorrect posted by Mike, June 4, 2009 This release fixes a bug that could sporadically trigger a "The parameter is incorrect" error."
« Juste regardé à la source de hudson actuelle, ils utilisent jcifs-ils sont 1.3.3 derrière et n'ont pas (ainsi que plusieurs autres) mise à jour (s). »
Je vais voir pousser ce dans le bug tracker en amont, et peut-être donner un coup de feu à intégrer la nouvelle version et la reconstruction sur place.
Mise à jour 1: déposé une numéro Tracker entrée
Mise à jour 2: nous avons basculé sur JNLP et utilisé que pour installer un service, qui est configuré pour démarrer automatiquement. Cela a travaillé sans problème hors ligne pour un jour ou deux maintenant. Est-ce que continuer à regarder le bogue amont pour voir si / quand toute activité qui s'y passe.