Problems with Windows Slaves: hudson.util.IOException2: remote file operation failed

503 views
Skip to first unread message

Joshua Boyd

unread,
Dec 5, 2012, 10:09:49 AM12/5/12
to jenkins...@googlegroups.com
I am running Jenkins 1.480.1 on a Linux server. I have an XP slave for
running browser tests. The slave is launched by javaws pointed at the
jnlp URL given in the master in a batch file in the startup folder.

For the last couple of nights, starting sometime between 12:00 and 1:00
AM until sometime mid to late morning, every run of both jobs that use
the slaves gives the output pasted at the bottom. Rebooting the slave
doesn't fix the issue.

The lines that stand out to me the most are "hudson.util.IOException2:
remote file operation failed:" (and the path referred to in that line
does exist still), and "Caused by: java.io.InvalidClassException:
hudson.FilePath; local class incompatible: stream classdesc
serialVersionUID = 1, local class serialVersionUID =
-8164662025349363814". I take that later error as an indication there
is a version mis-match, but I don't know why that would be since the
client code is loaded off of the master server.

I could really use some help.

Start of consoleText:

Started by timer
Building remotely on shamus-test in workspace c:\shamus\workspace\Chrome_Selenium_bunit
hudson.util.IOException2: remote file operation failed: c:\shamus\workspace\Chrome_Selenium_bunit at hudson.remoting.Channel@424de67:shamus-test
at hudson.FilePath.act(FilePath.java:838)
at hudson.FilePath.act(FilePath.java:824)
at hudson.FilePath.mkdirs(FilePath.java:890)
at hudson.model.AbstractProject.checkout(AbstractProject.java:1254)
at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:589)
at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:494)
at hudson.model.Run.execute(Run.java:1502)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)
Caused by: java.io.InvalidClassException: hudson.FilePath; local class incompatible: stream classdesc serialVersionUID = 1, local class serialVersionUID = -8164662025349363814
at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at hudson.remoting.UserRequest.deserialize(UserRequest.java:182)
at hudson.remoting.UserRequest.perform(UserRequest.java:98)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:326)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at hudson.remoting.Engine$1$1.run(Engine.java:60)
at java.lang.Thread.run(Unknown Source)
Recording test results
ERROR: Failed to archive test reports
hudson.util.IOException2: remote file operation failed: c:\shamus\workspace\Chrome_Selenium_bunit at hudson.remoting.Channel@424de67:shamus-test
at hudson.FilePath.act(FilePath.java:838)
at hudson.FilePath.act(FilePath.java:824)
at hudson.tasks.junit.JUnitParser.parse(JUnitParser.java:87)
at hudson.tasks.junit.JUnitResultArchiver.parse(JUnitResultArchiver.java:122)
at hudson.tasks.junit.JUnitResultArchiver.perform(JUnitResultArchiver.java:134)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:717)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:692)
at hudson.model.Build$BuildExecution.post2(Build.java:183)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:639)
at hudson.model.Run.execute(Run.java:1527)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:236)
Caused by: java.io.InvalidClassException: hudson.FilePath; local class incompatible: stream classdesc serialVersionUID = 1, local class serialVersionUID = -8164662025349363814
at java.io.ObjectStreamClass.initNonProxy(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at hudson.remoting.UserRequest.deserialize(UserRequest.java:182)
at hudson.remoting.UserRequest.perform(UserRequest.java:98)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:326)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at hudson.remoting.Engine$1$1.run(Engine.java:60)
at java.lang.Thread.run(Unknown Source)
Sending e-mails to: jdb...@vs-networks.com do...@vs-networks.com jer...@vs-networks.com sha...@vs-networks.com
Finished: FAILURE


Jerry

unread,
Dec 6, 2012, 11:06:17 AM12/6/12
to jenkins...@googlegroups.com
Hi, Joshua. When using the JNLP connection, I have found that we have gotten cryptic messages similar to this when the connection is lost. The JNLP connection is much more fragile than SSH, and if there is even a minor interruption in network connection, everything might go kablooey and give you weird errors.

Can you install OpenSSH or another SSH server (we use Bitvise here) on your Windows slave and see if that resolves the problem? I can't guarantee that it will, but using an SSH connection will have other benefits (most especially more reliability), so it's not wasted time in any case.

-- Jerry

Joshua Boyd

unread,
Dec 12, 2012, 4:00:48 PM12/12/12
to jenkins...@googlegroups.com
On 12/6/2012 11:06 AM, Jerry wrote:
> Hi, Joshua. When using the JNLP connection, I have found that we have
> gotten cryptic messages similar to this when the connection is lost.
> The JNLP connection is much more fragile than SSH, and if there is
> even a minor interruption in network connection, everything might go
> kablooey and give you weird errors.

Why can't jenkins just restart the connection? Can anyone else suggest
ways to make JNLP more reliable?
>
> Can you install OpenSSH or another SSH server (we use Bitvise here) on
> your Windows slave and see if that resolves the problem? I can't
> guarantee that it will, but using an SSH connection will have other
> benefits (most especially more reliability), so it's not wasted time
> in any case.

Does bitvise allow running GUI programs via ssh? After trying, then
giving up on freesshd, I then tried opensshd, but I can't get GUI
programs (like the web browser for selenium testing, or calc just for
trying to get anything to work) working correctly when launched via SSH
(and I didn enable "Allow service to interact with desktop").

Strausser, Barrett

unread,
Dec 12, 2012, 5:01:41 PM12/12/12
to jenkins...@googlegroups.com
Can you not install the Slave as a service on the machine?

Joshua Boyd

unread,
Dec 13, 2012, 1:24:20 PM12/13/12
to jenkins...@googlegroups.com
On 12/12/2012 5:01 PM, Strausser, Barrett wrote:
> Can you not install the Slave as a service on the machine?
>
>

If I install the slave as a service (choosing File->Install as Windows
Service in the Jenkins slave agent), won't it have the same trouble with
accessing the graphical interface? Or is the end result of installing
it as a service on the slave somehow different from starting it as a
remote service?


Reply all
Reply to author
Forward
Message has been deleted
0 new messages