Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-35184

Failed to load jenkins.util.SystemProperties on slaves due to ServletContext

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Blocker Blocker
    • core
    • jenkins-2.6+

      Credits to Vladimir Konnov for discovering it. Impact is unclear.

      RingBufferLogHandler is beig used on the slaves side (LOG_HOLDER). SlaveInitializer writes to logs and invokes logic leading to SystemProperties usage. ServletContext class cannot be serialized at that point.

      Cause:

      private static final int DEFAULT_RING_BUFFER_SIZE = SystemProperties.getInteger(RingBufferLogHandler.class.getName() + ".defaultSize", Integer.valueOf(256)).intValue();
      

      Log:

      <===[JENKINS REMOTING CAPACITY]===>channel started
      
      Slave.jar version: 2.59
      
      This is a Unix agent
      
      ERROR: Unable to launch the agent for jenkins-pipline-13
      java.io.IOException: Remote call on jenkins-pipline-13 failed
      	at hudson.remoting.Channel.call(Channel.java:789)
      	at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:536)
      	at hudson.slaves.SlaveComputer.setChannel(SlaveComputer.java:381)
      	at hudson.slaves.CommandLauncher.launch(CommandLauncher.java:131)
      	at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:253)
      	at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: java.lang.LinkageError: Failed to load jenkins.util.SystemProperties
      	at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:342)
      	at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:251)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      	at hudson.util.RingBufferLogHandler.<clinit>(RingBufferLogHandler.java:39)
      	at hudson.slaves.SlaveComputer$LogHolder.<clinit>(SlaveComputer.java:799)
      	at hudson.slaves.SlaveComputer$SlaveInitializer.call(SlaveComputer.java:808)
      	at hudson.slaves.SlaveComputer$SlaveInitializer.call(SlaveComputer.java:802)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:152)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:50)
      	at hudson.remoting.Request$2.run(Request.java:332)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:745)
      	at ......remote call to jenkins-pipline-13(Native Method)
      	at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1416)
      	at hudson.remoting.UserResponse.retrieve(UserRequest.java:252)
      	at hudson.remoting.Channel.call(Channel.java:781)
      	... 9 more
      Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
      	at java.lang.ClassLoader.defineClass1(Native Method)
      	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
      	at java.lang.ClassLoader.defineClass(ClassLoader.java:642)
      	at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:338)
      	at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:251)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      	at hudson.util.RingBufferLogHandler.<clinit>(RingBufferLogHandler.java:39)
      	at hudson.slaves.SlaveComputer$LogHolder.<clinit>(SlaveComputer.java:799)
      	at hudson.slaves.SlaveComputer$SlaveInitializer.call(SlaveComputer.java:808)
      	at hudson.slaves.SlaveComputer$SlaveInitializer.call(SlaveComputer.java:802)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:152)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:50)
      	at hudson.remoting.Request$2.run(Request.java:332)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      	... 4 more
      Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener
      	at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch(RemoteClassLoader.java:724)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:884)
      	at hudson.remoting.Request$2.run(Request.java:332)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      	at org.jenkinsci.remoting.CallableDecorator.call(CallableDecorator.java:18)
      	at hudson.remoting.CallableDecoratorList$1.call(CallableDecoratorList.java:21)
      	at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:745)
      	at ......remote call to channel(Native Method)
      	at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1416)
      	at hudson.remoting.Request.call(Request.java:172)
      	at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:252)
      	at com.sun.proxy.$Proxy5.fetch(Unknown Source)
      	at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:259)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
      	... 19 more
      
      ERROR: Connection terminated
      java.io.IOException: Unexpected termination of the channel
      	at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:50)
      Caused by: java.io.EOFException
      	at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2353)
      	at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2822)
      	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:804)
      	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:301)
      	at hudson.remoting.ObjectInputStreamEx.<init>(ObjectInputStreamEx.java:48)
      	at hudson.remoting.AbstractSynchronousByteArrayCommandTransport.read(AbstractSynchronousByteArrayCommandTransport.java:34)
      	at hudson.remoting.SynchronousCommandTransport$ReaderThread.run(SynchronousCommandTransport.java:48)
      ERROR: Process terminated with exit code 143
      

          [JENKINS-35184] Failed to load jenkins.util.SystemProperties on slaves due to ServletContext

          I'm hitting this issue too while developing on docker-slaves plugin (only with mvn hpi:run). magnayn I also have both dependencies but javax.servlet:servlet-api:jar:2.4 is provided so it's not used in the running process. I checked the open files descriptor and it's not open.

          Yoann Dubreuil added a comment - I'm hitting this issue too while developing on docker-slaves plugin (only with mvn hpi:run). magnayn I also have both dependencies but javax.servlet:servlet-api:jar:2.4 is provided so it's not used in the running process. I checked the open files descriptor and it's not open.

          I've made a fix proposal here https://github.com/jenkinsci/jenkins/pull/2551

          Yoann Dubreuil added a comment - I've made a fix proposal here https://github.com/jenkinsci/jenkins/pull/2551

          Jesse Glick added a comment -

          Implementing JENKINS-26677 would probably have made this bug immediately apparent, perhaps in core functional tests.

          Jesse Glick added a comment - Implementing JENKINS-26677 would probably have made this bug immediately apparent, perhaps in core functional tests.

          Code changed in jenkins
          User: Yoann Dubreuil
          Path:
          core/src/main/java/hudson/WebAppMain.java
          core/src/main/java/hudson/slaves/SlaveComputer.java
          core/src/main/java/hudson/util/RingBufferLogHandler.java
          core/src/main/java/jenkins/util/SystemProperties.java
          http://jenkins-ci.org/commit/jenkins/27d9b73ef4434de0000007c35352dfe48a08c751
          Log:
          JENKINS-35184 Servlet API dependent bits in a inner-class (#2551)

          This is in order to avoid loading ServletContextListener class
          from slaves classloader.

          • JENKINS-35184 Don't use SystemProperties while initializing remote agents

          This rolls back the previous commit and introduces a new way to construct
          RingBufferLogHandler which avoids relying on SystemProperties to get the
          default size.

          Adding `OnMaster` annotation does not prevent the class from being
          loaded on remote agent but it gives a hint that this class should not
          be used on a remote agent.

          In the previous code cleaning existing log handlers, SLAVE_LOG_HANDLER
          is always null, as static fields are scoped by classloader.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Yoann Dubreuil Path: core/src/main/java/hudson/WebAppMain.java core/src/main/java/hudson/slaves/SlaveComputer.java core/src/main/java/hudson/util/RingBufferLogHandler.java core/src/main/java/jenkins/util/SystemProperties.java http://jenkins-ci.org/commit/jenkins/27d9b73ef4434de0000007c35352dfe48a08c751 Log: JENKINS-35184 Servlet API dependent bits in a inner-class (#2551) JENKINS-35184 Servlet API dependent bits in a inner-class This is in order to avoid loading ServletContextListener class from slaves classloader. JENKINS-35184 Don't use SystemProperties while initializing remote agents This rolls back the previous commit and introduces a new way to construct RingBufferLogHandler which avoids relying on SystemProperties to get the default size. JENKINS-35184 Mark SystemProperties as OnMaster only class Adding `OnMaster` annotation does not prevent the class from being loaded on remote agent but it gives a hint that this class should not be used on a remote agent. JENKINS-35184 Set SLAVE_LOG_HANDLER at the very beginning In the previous code cleaning existing log handlers, SLAVE_LOG_HANDLER is always null, as static fields are scoped by classloader.

          Daniel Beck added a comment - Fixed by https://github.com/jenkinsci/jenkins/pull/2551 ydubreuil FYI https://wiki.jenkins-ci.org/display/JENKINS/Beginners+Guide+to+Contributing#BeginnersGuidetoContributing-CommitMessages

          Robert Klaus added a comment -

          We have the same failure but on our master (so not on a slave). We did an update to 2.19.2 but that didn't help. The problem hits us daily on different buildjobs without a clear pattern. A Jenkins restart helps.

          I'm not sure if this actually is an issue on its own, but given we have nearly the same stacktrace I guess it is related to this.

          java.io.IOException: Remote call on Channel to Maven [/opt/jdk1.8.0_112/bin/java, -cp, /opt/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven33-agent-1.8.1.jar:/opt/apache-maven-3.3.9/boot/plexus-classworlds-2.5.2.jar:/opt/apache-maven-3.3.9/conf/logging, jenkins.maven3.agent.Maven33Main, /opt/apache-maven-3.3.9, /var/cache/jenkins/war/WEB-INF/lib/remoting-2.62.jar, /opt/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven33-interceptor-1.8.1.jar, /opt/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.8.1.jar, 36506] failed
          	at hudson.remoting.Channel.call(Channel.java:805)
          	at hudson.maven.ProcessCache$MavenProcess.call(ProcessCache.java:161)
          	at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:873)
          	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:534)
          	at hudson.model.Run.execute(Run.java:1720)
          	at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:544)
          	at hudson.model.ResourceController.execute(ResourceController.java:98)
          	at hudson.model.Executor.run(Executor.java:404)
          Caused by: java.lang.LinkageError: Failed to load jenkins.util.SystemProperties
          	at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:377)
          	at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:285)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
          	at hudson.Main.<clinit>(Main.java:222)
          	at hudson.EnvVars.initMaster(EnvVars.java:432)
          	at hudson.EnvVars.<clinit>(EnvVars.java:427)
          	at java.io.ObjectStreamClass.hasStaticInitializer(Native Method)
          	at java.io.ObjectStreamClass.computeDefaultSUID(ObjectStreamClass.java:1787)
          	at java.io.ObjectStreamClass.access$100(ObjectStreamClass.java:72)
          	at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:253)
          	at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:251)
          	at java.security.AccessController.doPrivileged(Native Method)
          	at java.io.ObjectStreamClass.getSerialVersionUID(ObjectStreamClass.java:250)
          	at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:611)
          	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1630)
          	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521)
          	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1781)
          	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
          	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018)
          	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942)
          	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)
          	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
          	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
          	at hudson.remoting.UserRequest.deserialize(UserRequest.java:217)
          	at hudson.remoting.UserRequest.perform(UserRequest.java:131)
          	at hudson.remoting.UserRequest.perform(UserRequest.java:50)
          	at hudson.remoting.Request$2.run(Request.java:332)
          	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
          	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          	at java.lang.Thread.run(Thread.java:745)
          	at ......remote call to Channel to Maven [/opt/jdk1.8.0_112/bin/java, -cp, /opt/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven33-agent-1.8.1.jar:/opt/apache-maven-3.3.9/boot/plexus-classworlds-2.5.2.jar:/opt/apache-maven-3.3.9/conf/logging, jenkins.maven3.agent.Maven33Main, /opt/apache-maven-3.3.9, /var/cache/jenkins/war/WEB-INF/lib/remoting-2.62.jar, /opt/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven33-interceptor-1.8.1.jar, /opt/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.8.1.jar, 36506](Native Method)
          	at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1433)
          	at hudson.remoting.UserResponse.retrieve(UserRequest.java:253)
          	at hudson.remoting.Channel.call(Channel.java:797)
          	... 7 more
          Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener
          	at java.lang.ClassLoader.defineClass1(Native Method)
          	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
          	at java.lang.ClassLoader.defineClass(ClassLoader.java:642)
          	at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:373)
          	at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:285)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
          	at hudson.Main.<clinit>(Main.java:222)
          	at hudson.EnvVars.initMaster(EnvVars.java:432)
          	at hudson.EnvVars.<clinit>(EnvVars.java:427)
          	at java.io.ObjectStreamClass.hasStaticInitializer(Native Method)
          	at java.io.ObjectStreamClass.computeDefaultSUID(ObjectStreamClass.java:1787)
          	at java.io.ObjectStreamClass.access$100(ObjectStreamClass.java:72)
          	at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:253)
          	at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:251)
          	at java.security.AccessController.doPrivileged(Native Method)
          	at java.io.ObjectStreamClass.getSerialVersionUID(ObjectStreamClass.java:250)
          	at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:611)
          	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1630)
          	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521)
          	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1781)
          	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
          	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018)
          	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942)
          	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808)
          	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
          	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
          	at hudson.remoting.UserRequest.deserialize(UserRequest.java:217)
          	at hudson.remoting.UserRequest.perform(UserRequest.java:131)
          	at hudson.remoting.UserRequest.perform(UserRequest.java:50)
          	at hudson.remoting.Request$2.run(Request.java:332)
          	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
          	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          	at java.lang.Thread.run(Thread.java:745)
          Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener (java.net.URLClassLoader@3f99bd52 did not find class file)
          	at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch2(RemoteClassLoader.java:792)
          	at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch4(RemoteClassLoader.java:842)
          	at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch3(RemoteClassLoader.java:849)
          	at sun.reflect.GeneratedMethodAccessor208.invoke(Unknown Source)
          	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          	at java.lang.reflect.Method.invoke(Method.java:498)
          	at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:887)
          	at hudson.remoting.Request$2.run(Request.java:332)
          	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
          	at org.jenkinsci.remoting.CallableDecorator.call(CallableDecorator.java:18)
          	at hudson.remoting.CallableDecoratorList$1.call(CallableDecoratorList.java:21)
          	at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
          	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          	at java.lang.Thread.run(Thread.java:745)
          	at ......remote call to channel(Native Method)
          	at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1433)
          	at hudson.remoting.Request.call(Request.java:172)
          	at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:255)
          	at com.sun.proxy.$Proxy2.fetch3(Unknown Source)
          	at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:187)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
          	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
          	... 36 more
          

          Robert Klaus added a comment - We have the same failure but on our master (so not on a slave). We did an update to 2.19.2 but that didn't help. The problem hits us daily on different buildjobs without a clear pattern. A Jenkins restart helps. I'm not sure if this actually is an issue on its own, but given we have nearly the same stacktrace I guess it is related to this. java.io.IOException: Remote call on Channel to Maven [/opt/jdk1.8.0_112/bin/java, -cp, /opt/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven33-agent-1.8.1.jar:/opt/apache-maven-3.3.9/boot/plexus-classworlds-2.5.2.jar:/opt/apache-maven-3.3.9/conf/logging, jenkins.maven3.agent.Maven33Main, /opt/apache-maven-3.3.9, /var/cache/jenkins/war/WEB-INF/lib/remoting-2.62.jar, /opt/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven33-interceptor-1.8.1.jar, /opt/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.8.1.jar, 36506] failed at hudson.remoting.Channel.call(Channel.java:805) at hudson.maven.ProcessCache$MavenProcess.call(ProcessCache.java:161) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:873) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:534) at hudson.model.Run.execute(Run.java:1720) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:544) at hudson.model.ResourceController.execute(ResourceController.java:98) at hudson.model.Executor.run(Executor.java:404) Caused by: java.lang.LinkageError: Failed to load jenkins.util.SystemProperties at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:377) at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:285) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at hudson.Main.<clinit>(Main.java:222) at hudson.EnvVars.initMaster(EnvVars.java:432) at hudson.EnvVars.<clinit>(EnvVars.java:427) at java.io.ObjectStreamClass.hasStaticInitializer(Native Method) at java.io.ObjectStreamClass.computeDefaultSUID(ObjectStreamClass.java:1787) at java.io.ObjectStreamClass.access$100(ObjectStreamClass.java:72) at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:253) at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:251) at java.security.AccessController.doPrivileged(Native Method) at java.io.ObjectStreamClass.getSerialVersionUID(ObjectStreamClass.java:250) at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:611) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1630) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1781) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) at hudson.remoting.UserRequest.deserialize(UserRequest.java:217) at hudson.remoting.UserRequest.perform(UserRequest.java:131) at hudson.remoting.UserRequest.perform(UserRequest.java:50) at hudson.remoting.Request$2.run(Request.java:332) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at ......remote call to Channel to Maven [/opt/jdk1.8.0_112/bin/java, -cp, /opt/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven33-agent-1.8.1.jar:/opt/apache-maven-3.3.9/boot/plexus-classworlds-2.5.2.jar:/opt/apache-maven-3.3.9/conf/logging, jenkins.maven3.agent.Maven33Main, /opt/apache-maven-3.3.9, /var/cache/jenkins/war/WEB-INF/lib/remoting-2.62.jar, /opt/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven33-interceptor-1.8.1.jar, /opt/jenkins/home/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.8.1.jar, 36506](Native Method) at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1433) at hudson.remoting.UserResponse.retrieve(UserRequest.java:253) at hudson.remoting.Channel.call(Channel.java:797) ... 7 more Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763) at java.lang.ClassLoader.defineClass(ClassLoader.java:642) at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:373) at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:285) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at hudson.Main.<clinit>(Main.java:222) at hudson.EnvVars.initMaster(EnvVars.java:432) at hudson.EnvVars.<clinit>(EnvVars.java:427) at java.io.ObjectStreamClass.hasStaticInitializer(Native Method) at java.io.ObjectStreamClass.computeDefaultSUID(ObjectStreamClass.java:1787) at java.io.ObjectStreamClass.access$100(ObjectStreamClass.java:72) at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:253) at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:251) at java.security.AccessController.doPrivileged(Native Method) at java.io.ObjectStreamClass.getSerialVersionUID(ObjectStreamClass.java:250) at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:611) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1630) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1781) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2018) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1942) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1808) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373) at hudson.remoting.UserRequest.deserialize(UserRequest.java:217) at hudson.remoting.UserRequest.perform(UserRequest.java:131) at hudson.remoting.UserRequest.perform(UserRequest.java:50) at hudson.remoting.Request$2.run(Request.java:332) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener (java.net.URLClassLoader@3f99bd52 did not find class file) at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch2(RemoteClassLoader.java:792) at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch4(RemoteClassLoader.java:842) at hudson.remoting.RemoteClassLoader$ClassLoaderProxy.fetch3(RemoteClassLoader.java:849) at sun.reflect.GeneratedMethodAccessor208.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:887) at hudson.remoting.Request$2.run(Request.java:332) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) at org.jenkinsci.remoting.CallableDecorator.call(CallableDecorator.java:18) at hudson.remoting.CallableDecoratorList$1.call(CallableDecoratorList.java:21) at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at ......remote call to channel(Native Method) at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1433) at hudson.remoting.Request.call(Request.java:172) at hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:255) at com.sun.proxy.$Proxy2.fetch3(Unknown Source) at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:187) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 36 more

          Yes, it is related. It seems that a plugin is trying to use SystemProperties from a slave. Unfortunately, the stacktrace doesn't contain enough information to pinpoint which plugin causes this.

          To get you some context, the fix which went to 2.19.2 changes the way the slave initializer get the ringBufferSize property in order to not use SystemProperties from a slave, because it's not legal (which is why the patched also added OnMaster marker to SystemProperties class)

          Yoann Dubreuil added a comment - Yes, it is related. It seems that a plugin is trying to use SystemProperties from a slave. Unfortunately, the stacktrace doesn't contain enough information to pinpoint which plugin causes this. To get you some context, the fix which went to 2.19.2 changes the way the slave initializer get the ringBufferSize property in order to not use SystemProperties from a slave, because it's not legal (which is why the patched also added OnMaster marker to SystemProperties class)

          Robert Klaus added a comment -

          Thanks for the info. We also suspected a plugin but are a bit lost figuring out which one causes this. Is there a log where this might be found?

          Robert Klaus added a comment - Thanks for the info. We also suspected a plugin but are a bit lost figuring out which one causes this. Is there a log where this might be found?

          Not that I know of. To find which plugin it is, you will need to find the class which triggers the load on the slave. Turning classloading logs on a slave might help or remoting layer logs.

          Yoann Dubreuil added a comment - Not that I know of. To find which plugin it is, you will need to find the class which triggers the load on the slave. Turning classloading logs on a slave might help or remoting layer logs.

          Daniel Beck added a comment -

          This is the remoting channel Jenkins uses to attach to a Maven Project build.

          Don't use the Maven project type. It's evil.

          Daniel Beck added a comment - This is the remoting channel Jenkins uses to attach to a Maven Project build. Don't use the Maven project type. It's evil.

            oleg_nenashev Oleg Nenashev
            oleg_nenashev Oleg Nenashev
            Votes:
            1 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated:
              Resolved: