Hudson di Windows lancio schiavo servizio causa SmbException
Domanda
Abbiamo appena acquisito tre nuovi schiavi per costruire Hudson , che eseguono Windows XP x64. Stiamo avendo problemi di distribuzione su questi che non abbiamo visto prima (abbiamo altre due macchine XP32 già slave).
Quando abbiamo primo riavvio del server, o solo dopo il riavvio del servizio Server, registro del nodo on Hudson, presenta i seguenti (nome di dominio cambiato per proteggere gli innocenti):
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)
Su qualsiasi successivi tentativi di "servizio schiavo Launch", otteniamo:
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)
Sembra samba stesso, non Hudson, può essere il problema. Abbiamo appartenenza ai gruppi ricontrollato e le autorizzazioni di directory per C: \ Hudson e sono identici agli altri due schiavi
.Utilizzare smbclient dal server MacOSX che è effettivamente in esecuzione Tomcat + Hudson (ma non esegue costruisce), sono stato in grado di ottenere una risposta strana su un tentativo:
smb: \hudson\> get hudson-slave.exe NT_STATUS_INSUFF_SERVER_RESOURCES opening remote file \hudson\hudson-slave.exe
googling intorno suggeriscono un problema IRPStackSize potrebbe essere il colpevole, ma sollevamento che fino a 5 un tempo (eventualmente a 50 = 0x32) e riavviando il servizio Server non sembra aiutare.
Per inciso, il lancio del client JNLP funziona bene, anche se noi preferiremmo avere come servizio.
Versione Hudson è 1.323, tra l'altro (solo uno dietro, nulla nel changelog appare particolarmente rilevante).
Soluzione
Sembra che JCIFS può avere una correzione per questo. Da un collega:
"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."
"si limitò alla fonte Hudson corrente, che stanno usando JCIFS-1.3.3 in modo che siano alle spalle e non hanno questo (così come molti altri) aggiornamento (s)".
Vedrò di spingere questo nel bug tracker monte, e forse dare un colpo ad integrare la versione più recente e la ricostruzione a livello locale.
Aggiornamento 1: presentato una href="https://hudson.dev.java.net/issues/show_bug.cgi?id=4564" rel="nofollow noreferrer"> problema ingresso inseguitore
Aggiornamento 2: abbiamo passa ad JNLP e utilizzato che per installare un servizio, che è impostato per l'avvio automatico. Ciò sta funzionando senza problemi offline per un giorno o due ora. Sarà continuare a guardare il bug monte per vedere se / quando ogni attività vi accade.