Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 370892

Summary: gef-nightly-tycho fails because of ClassLoader problem within Hudson
Product: Community Reporter: Alexander Nyßen <nyssen>
Component: CI-JenkinsAssignee: Eclipse Webmaster <webmaster>
Status: RESOLVED NOT_ECLIPSE QA Contact:
Severity: blocker    
Priority: P3    
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:

Description Alexander Nyßen CLA 2012-02-07 17:15:35 EST
GEF nightly build is failing for the last five days because the following class loading problems occur.

Started by timer
Building remotely on hudson-slave1
hudson.util.IOException2: remote file operation failed: /opt/users/hudsonbuild/workspace/gef-nightly-tycho at hudson.remoting.Channel@17e2c93c:hudson-slave1
	at hudson.FilePath.act(FilePath.java:754)
	at hudson.FilePath.act(FilePath.java:740)
	at hudson.scm.CVSSCM.isUpdatable(CVSSCM.java:439)
	at hudson.scm.CVSSCM.checkout(CVSSCM.java:310)
	at hudson.model.AbstractProject.checkout(AbstractProject.java:1229)
	at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:507)
	at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:424)
	at hudson.model.Run.run(Run.java:1367)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
	at hudson.model.ResourceController.execute(ResourceController.java:88)
	at hudson.model.Executor.run(Executor.java:145)
Caused by: java.io.IOException: Remote call on hudson-slave1 failed
	at hudson.remoting.Channel.call(Channel.java:659)
	at hudson.FilePath.act(FilePath.java:747)
	... 10 more
Caused by: java.lang.LinkageError: loader (instance of  hudson/remoting/RemoteClassLoader): attempted  duplicate class definition for name: "hudson/model/AbstractProject"
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:466)
	at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:151)
	at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:131)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
	at java.lang.Class.getDeclaredMethod(Class.java:1935)
	at java.io.ObjectStreamClass.getPrivateMethod(ObjectStreamClass.java:1382)
	at java.io.ObjectStreamClass.access$1700(ObjectStreamClass.java:52)
	at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:438)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:413)
	at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:310)
	at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:547)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	at hudson.remoting.UserRequest.deserialize(UserRequest.java:178)
	at hudson.remoting.UserRequest.perform(UserRequest.java:98)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:283)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	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)
Recording test results
Archiving artifacts
Sending e-mails to: alexander.nyssen@itemis.de
[DEBUG] Skipping watched dependency update for build: gef-nightly-tycho #148 due to result: FAILURE
Finished: FAILURE
Comment 1 Eclipse Webmaster CLA 2012-02-08 11:26:26 EST
Slave1 has been restarted.  It would appear that increasing the number of executors (on a given slave) causes this problem to occur more often.

I'm going to close as 'not_eclipse' since this actually seems to be a Hudson issue.

-M.
Comment 2 Alexander Nyßen CLA 2012-02-08 16:33:40 EST
(In reply to comment #1)
> Slave1 has been restarted.  It would appear that increasing the number of
> executors (on a given slave) causes this problem to occur more often.
> 
> I'm going to close as 'not_eclipse' since this actually seems to be a Hudson
> issue.
> 
> -M.

Agreed, but thats the second or third time the gef build ran into this problems. Do you have any idea what is the underlying cause. Is there a change we can find out and report it?
Comment 3 Eclipse Webmaster CLA 2012-02-09 10:02:15 EST
I don't have any special insight(not being a Java wizard), but I do recall seeing others(via Google) with this issue.

My simplistic guess is that the 'widget' that tracks slave activity/execution is easily corrupted when the number of executor threads on a slave starts to climb(and one of the threads falls over).

We're working with the Hudson folks to get them some debug access so hopefully they may be able to explain this(or even fix it)

-M.