4

我们刚刚为Hudson购买了三个新的构建从站,它们运行 Windows XP x64。我们在部署这些之前从未见过的问题(我们有另外两台 XP32 机器已经从属)。

当我们第一次重启服务器,或者刚刚重启Server服务后,节点在hudson上的登录显示如下(域名改了保护无辜):

连接到 beast.example.com
复制slave.jar
参数不正确。
jcifs.smb.SmbException:参数不正确。
在 jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:542)
在 jcifs.smb.SmbTransport.send(SmbTransport.java:644)
在 jcifs.smb.SmbSession.sessionSetup(SmbSession.java:371)
在 jcifs.smb.SmbSession.send(SmbSession.java:235)
在 jcifs.smb.SmbTree.treeConnect(SmbTree.java:161)
在 jcifs.smb.SmbFile.doConnect(SmbFile.java:858)
在 jcifs.smb.SmbFile.connect(SmbFile.java:901)
在 jcifs.smb.SmbFile.connect0(SmbFile.java:827)
在 jcifs.smb.SmbFile.open0(SmbFile.java:917)
在 jcifs.smb.SmbFile.open(SmbFile.java:951)
在 jcifs.smb.SmbFileOutputStream.(SmbFileOutputStream.java:142)
在 jcifs.smb.SmbFileOutputStream.(SmbFileOutputStream.java:97)
在 jcifs.smb.SmbFileOutputStream.(SmbFileOutputStream.java:67)
在 jcifs.smb.SmbFile.getOutputStream(SmbFile.java:2793)
在 hudson.os.windows.ManagedWindowsServiceLauncher.copySlaveJar(ManagedWindowsServiceLauncher.java:198)
在 hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:152)
在 hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:175)
在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
在 java.util.concurrent.FutureTask.run(FutureTask.java:123)
在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
在 java.lang.Thread.run(Thread.java:613)

在任何后续尝试“启动从服务”时,我们得到:

连接到 beast.example.com
复制slave.jar
0xC0000205
jcifs.smb.SmbException: 0xC0000205
在 jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:542)
在 jcifs.smb.SmbTransport.send(SmbTransport.java:644)
在 jcifs.smb.SmbSession.send(SmbSession.java:242)
在 jcifs.smb.SmbTree.send(SmbTree.java:111)
在 jcifs.smb.SmbFile.send(SmbFile.java:729)
在 jcifs.smb.SmbFile.open0(SmbFile.java:934)
在 jcifs.smb.SmbFile.open(SmbFile.java:951)
在 jcifs.smb.SmbFileOutputStream.(SmbFileOutputStream.java:142)
在 jcifs.smb.SmbFileOutputStream.(SmbFileOutputStream.java:97)
在 jcifs.smb.SmbFileOutputStream.(SmbFileOutputStream.java:67)
在 jcifs.smb.SmbFile.getOutputStream(SmbFile.java:2793)
在 hudson.os.windows.ManagedWindowsServiceLauncher.copySlaveJar(ManagedWindowsServiceLauncher.java:198)
在 hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:152)
在 hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:175)
在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
在 java.util.concurrent.FutureTask.run(FutureTask.java:123)
在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676)
在 java.lang.Thread.run(Thread.java:613)

似乎桑巴舞本身而不是哈德逊可能是问题所在。我们仔细检查了 C:\hudson 的组成员身份和目录权限,它们与其他两个从属相同。

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

smb: \hudson\> 获取 hudson-slave.exe
NT_STATUS_INSUFF_SERVER_RESOURCES 打开远程文件 \hudson\hudson-slave.exe

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

顺便说一句,启动 JNLP 客户端工作得很好,尽管我们更喜欢将它作为服务。


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

4

1 回答 1

0

看起来 JCIFS 可能对此有修复。来自同事:

"jcifs-1.3.10 发布/SmbException 的Bugfix: 参数不正确
由迈克于 2009 年 6 月 4 日发布
此版本修复了可能偶尔触发“参数不正确”错误的错误。

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

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


更新 1:在此处提交问题跟踪器条目


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

于 2009-09-26T14:39:27.607 回答