Hudson Windows服务从属启动导致SmbException

时间:2009-09-25 18:20:33

标签: hudson smb jcifs

我们刚刚为Hudson购买了三个新的构建从属服务器,它们运行的​​是Windows XP x64。我们遇到了一些我们以前从未见过的问题(我们还有另外两台XP32机器已经被奴役)。

当我们第一次重新启动服务器时,或刚刚重新启动服务器服务后,节点登录hudson会显示以下内容(更改域名以保护无辜者):

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)

在“启动奴隶服务”的任何后续尝试中,我们得到:

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)

似乎桑巴本身,而不是哈德森,可能是问题。我们仔细检查了C:\ hudson的组成员资格和目录权限,它们与其他两个奴隶相同。

使用实际运行Tomcat + Hudson的MacOSX服务器中的smbclient(但不执行构建),我在一次尝试时得到了一个奇怪的响应:

smb: \hudson\> get hudson-slave.exe
NT_STATUS_INSUFF_SERVER_RESOURCES opening remote file \hudson\hudson-slave.exe

谷歌搜索建议IRPStackSize问题可能是罪魁祸首,但一次最多5次(最终到50 = 0x32)并重新启动服务器服务似乎没有帮助。

顺便说一句,启动JNLP客户端的工作正常,但我们更愿意将其作为服务。


顺便说一句,Hudson版本是1.323(只有一个落后,更改日志中没有任何内容看起来特别相关)。

1 个答案:

答案 0 :(得分:0)

看起来JCIFS可能已经解决了这个问题。来自同事:

"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." 

“只看当前的哈德逊源,他们使用的是jcifs-1.3.3,所以他们落后了,没有这个(以及其他几个)更新。”

我会看到将其推入上游错误跟踪器,并且可能会尝试集成新版本并在本地重建。


更新1:提交issue tracker entry here


更新2:我们已切换到JNLP并使用它来安装服务,该服务设置为自动启动。这一天一直工作,没有离线问题一两天。将继续观察上游错误,看看是否/何时发生任何活动。