If you chose "Let Hudson control this Windows slave as a Windows service" for connecting to slave, you may get an error message like this:
Access is denied. [0x00000005] at org.jinterop.dcom.core.JIComServer.init(JIComServer.java:542) at org.jinterop.dcom.core.JIComServer.initialise(JIComServer.java:458) at org.jinterop.dcom.core.JIComServer.(JIComServer.java:427) at org.jvnet.hudson.wmi.WMI.connect(WMI.java:41) at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:107) at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:170) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) Caused by: rpc.FaultException: Received fault. (unknown) at rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.java:142) at rpc.Stub.call(Stub.java:112) at org.jinterop.dcom.core.JIComServer.init(JIComServer.java:538) ... 10 more
If so, check the following settings on Windows:
Make sure that the user name you have entered is a member of the local "Administrators" group. In the default Windows installation, this group membership is required for Hudson to remotely copy files and install a service.
By default, Windows Firewall prevents the TCP connections necessary to make this mechanism work. The firewall on the slave must allow the following exceptions (see List of TCP&UDP port numbers):
The easiest way to track down firewall issues is to use tcpdump. Just run the following command on the Hudson server, which is trying to connect to the slave:
Linux/UNIX:
tcpdump -n -i-s 1500 port not 22 and host the network interface name, e.g. eth1 the IP address of the slave
When the Ports 139 (NetBIOS Session Service) and 445 (Windows Shares) are not available, the following error message appears:
ERROR: Message not found for errorCode: 0xC0000001 org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC0000001 at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:121) at org.jinterop.dcom.core.JIComServer.initialise(JIComServer.java:479) at org.jinterop.dcom.core.JIComServer.(JIComServer.java:427) at org.jvnet.hudson.wmi.WMI.connect(WMI.java:41) at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:137) at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:184) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) Caused by: jcifs.smb.SmbException: Connection timeout jcifs.util.transport.TransportException: Connection timeout at jcifs.util.transport.Transport.connect(Transport.java:178) at jcifs.smb.SmbTransport.connect(SmbTransport.java:294) at jcifs.smb.SmbTree.treeConnect(SmbTree.java:141) 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.SmbFileInputStream. (SmbFileInputStream.java:76) at jcifs.smb.SmbFileInputStream. (SmbFileInputStream.java:65) at jcifs.smb.SmbFile.getInputStream(SmbFile.java:2784) at rpc.ncacn_np.RpcTransport.attach(RpcTransport.java:90) at rpc.Stub.attach(Stub.java:105) at rpc.Stub.call(Stub.java:109) at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:119) at org.jinterop.dcom.core.JIComServer.initialise(JIComServer.java:479) at org.jinterop.dcom.core.JIComServer. (JIComServer.java:427) at org.jvnet.hudson.wmi.WMI.connect(WMI.java:41) at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:137) at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:184) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) at jcifs.smb.SmbTransport.connect(SmbTransport.java:296) at jcifs.smb.SmbTree.treeConnect(SmbTree.java:141) 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.SmbFileInputStream. (SmbFileInputStream.java:76) at jcifs.smb.SmbFileInputStream. (SmbFileInputStream.java:65) at jcifs.smb.SmbFile.getInputStream(SmbFile.java:2784) at rpc.ncacn_np.RpcTransport.attach(RpcTransport.java:90) at rpc.Stub.attach(Stub.java:105) at rpc.Stub.call(Stub.java:109) at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:119) ... 10 more
This only applies to Windows computers that are not a part of a domain (reference) |
The Remote Registry service must be running in order to install the Hudson service, but it may be stopped on your computer. This is especially true for Windows Vista, where it is disabled by default. If it is not running, you may get an error like this:
Message not found for errorCode: 0xC0000034 org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC0000034 at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:121) at org.jinterop.dcom.core.JIComServer.initialise(JIComServer.java:479) at org.jinterop.dcom.core.JIComServer.(JIComServer.java:427) at org.jvnet.hudson.wmi.WMI.connect(WMI.java:41) at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:107) at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:178) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:636) Caused by: jcifs.smb.SmbException: The system cannot find the file specified. 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.TransactNamedPipeOutputStream. (TransactNamedPipeOutputStream.java:32) at jcifs.smb.SmbNamedPipe.getNamedPipeOutputStream(SmbNamedPipe.java:187) at rpc.ncacn_np.RpcTransport.attach(RpcTransport.java:91) at rpc.Stub.attach(Stub.java:105) at rpc.Stub.call(Stub.java:109) at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:119) ... 10 more
If so, start the control panel, open "Administrative Tools," then "Services." Locate the Remote Registry service on the list, and click "Start this service."
On Windows XP / 2003, if you see a message like this:
Installing the Hudson slave service No more data is available. [0x00000103] org.jinterop.dcom.common.JIException: No more data is available. [0x00000103] at org.jinterop.winreg.smb.JIWinRegStub.winreg_EnumKey(JIWinRegStub.java:390) at hudson.util.jna.DotNet.isInstalled(DotNet.java:81) at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:117) at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:180) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:636) Caused by: org.jinterop.dcom.common.JIRuntimeException: No more data is available. [0x00000103] at org.jinterop.winreg.IJIWinReg$enumKey.read(IJIWinReg.java:762) at ndr.NdrObject.decode(NdrObject.java:19) at rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.java:138) at rpc.Stub.call(Stub.java:112) at org.jinterop.winreg.smb.JIWinRegStub.winreg_EnumKey(JIWinRegStub.java:386) ... 8 more
Then try upgrading .NET framework to ver 3.5SP1.
Taken from http://n4.nabble.com/exception-when-winxp-slaves-launch-No-more-data-is-available-0x00000103-td386006.html
I'm using Windows Server 2008 R2 Standard (Service Pack 1, 64-bit) in our environment. Creation of windows slaves with "Let Hudson control this Windows slave as a Windows service" failed.
This is caused by the TrustedInstaller concept of windows.
Solution I found so far:
Hudson requires full access to WBEM Scripting Locator (HKEY_CLASSES_ROOT\CLSID{76A64158-CB41-11D1-8B02-00600806D9B6}). Default for administrators group is just read.
Change permissions for administrators group to "Full Control".
Please file an issue about the problem with the stack trace, with information like Windows versions, so that we can take a look.
参考:http://wiki.hudson-ci.org/display/HUDSON/Windows+slaves+fail+to+start+via+DCOM