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

Analysis plug-ins don't work with master slave configurations

      At the end of an otherwise-successful build on a slave machine:

      ...
      Archiving artifacts
      Recording test results
      Recording fingerprints
      [WARNINGS] Parsing warnings in console log...
      FATAL: remote file operation failed
      hudson.util.IOException2: remote file operation failed
      	at hudson.FilePath.act(FilePath.java:677)
      	at hudson.FilePath.act(FilePath.java:665)
      	at hudson.plugins.warnings.WarningsPublisher.perform(WarningsPublisher.java:216)
      	at hudson.plugins.analysis.core.HealthAwarePublisher.perform(HealthAwarePublisher.java:140)
      	at hudson.tasks.BuildStepMonitor$2.perform(BuildStepMonitor.java:27)
      	at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:577)
      	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:563)
      	at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:551)
      	at hudson.model.Build$RunnerImpl.post2(Build.java:152)
      	at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:535)
      	at hudson.model.Run.run(Run.java:1199)
      	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
      	at hudson.model.ResourceController.execute(ResourceController.java:88)
      	at hudson.model.Executor.run(Executor.java:123)
      Caused by: java.io.IOException: Remote call failed
      	at hudson.remoting.Channel.call(Channel.java:552)
      	at hudson.FilePath.act(FilePath.java:672)
      	... 13 more
      Caused by: java.lang.ClassNotFoundException: Failed to deserialize the Callable object. Perhaps you needed to implement DelegatingCallable?
      	at hudson.remoting.UserRequest.perform(UserRequest.java:90)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
      	at hudson.remoting.Request$2.run(Request.java:270)
      	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)
      Caused by: java.lang.ClassNotFoundException: hudson.plugins.warnings.parser.Warning
      	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
      	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
      	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
      	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
      	at java.lang.Class.forName0(Native Method)
      	at java.lang.Class.forName(Class.java:247)
      	at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:604)
      	at hudson.remoting.ObjectInputStreamEx.resolveClass(ObjectInputStreamEx.java:50)
      	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
      	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.readObject(ObjectInputStream.java:351)
      	at java.util.HashSet.readObject(HashSet.java:291)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      	at java.lang.reflect.Method.invoke(Method.java:597)
      	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
      	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
      	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.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:168)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:88)
      	... 8 more
      

          [JENKINS-4993] Analysis plug-ins don't work with master slave configurations

          pjimenez3 added a comment -

          Seeing it here too with hudson v1.336 and Warnings Plug-in v3.0

          pjimenez3 added a comment - Seeing it here too with hudson v1.336 and Warnings Plug-in v3.0

          Ulli Hafner added a comment -

          Kohsuke, can you please have a look at this issue? I think the problem is caused by the refactoring of my plug-ins. Now the static code analysis plug-ins share one common "utility" plug-in that contains the common classes.

          It seems that the remoting layer transfers only the classes of my actual analysis plug-in to the slave but not the required and dependent classes of the analysis-core plug-in. Is there a configuration missing in my plug-in or is this a bug in the remoting layer?

          Ulli Hafner added a comment - Kohsuke, can you please have a look at this issue? I think the problem is caused by the refactoring of my plug-ins. Now the static code analysis plug-ins share one common "utility" plug-in that contains the common classes. It seems that the remoting layer transfers only the classes of my actual analysis plug-in to the slave but not the required and dependent classes of the analysis-core plug-in. Is there a configuration missing in my plug-in or is this a bug in the remoting layer?

          Problem confirmed. While I can fix this in the analysis-core plugin, I'm thinking about fixing this in the core to get rid of this sort of problems entirely for plugin developers.

          Kohsuke Kawaguchi added a comment - Problem confirmed. While I can fix this in the analysis-core plugin, I'm thinking about fixing this in the core to get rid of this sort of problems entirely for plugin developers.

          And I now remembered MultiClassLoaderSerializer that I tried to introduce and rolled back (JENKINS-4293), which is probably the proper fix for this.

          Kohsuke Kawaguchi added a comment - And I now remembered MultiClassLoaderSerializer that I tried to introduce and rolled back ( JENKINS-4293 ), which is probably the proper fix for this.

          Keeping track of multi classloader support in a separate issue JENKINS-5048

          Kohsuke Kawaguchi added a comment - Keeping track of multi classloader support in a separate issue JENKINS-5048

          Code changed in hudson
          User: : kohsuke
          Path:
          trunk/hudson/main/core/src/main/java/hudson/ClassicPluginStrategy.java
          trunk/hudson/main/remoting/src/main/java/hudson/remoting/Capability.java
          trunk/hudson/main/remoting/src/main/java/hudson/remoting/MultiClassLoaderSerializer.java
          trunk/hudson/main/remoting/src/main/java/hudson/remoting/RemoteClassLoader.java
          trunk/hudson/main/remoting/src/test/java/hudson/remoting/ChannelTest.java
          http://fisheye4.cenqua.com/changelog/hudson/?cs=24490
          Log:
          JENKINS-5048 Fixed the multi-classloader support in the remoting code. I confirmed that this fixes JENKINS-4993 without modifying the warnings/analysis-core plugin.

          SCM/JIRA link daemon added a comment - Code changed in hudson User: : kohsuke Path: trunk/hudson/main/core/src/main/java/hudson/ClassicPluginStrategy.java trunk/hudson/main/remoting/src/main/java/hudson/remoting/Capability.java trunk/hudson/main/remoting/src/main/java/hudson/remoting/MultiClassLoaderSerializer.java trunk/hudson/main/remoting/src/main/java/hudson/remoting/RemoteClassLoader.java trunk/hudson/main/remoting/src/test/java/hudson/remoting/ChannelTest.java http://fisheye4.cenqua.com/changelog/hudson/?cs=24490 Log: JENKINS-5048 Fixed the multi-classloader support in the remoting code. I confirmed that this fixes JENKINS-4993 without modifying the warnings/analysis-core plugin.

          Fix of JENKINS-5048 in 1.337 will fix this issue.

          Kohsuke Kawaguchi added a comment - Fix of JENKINS-5048 in 1.337 will fix this issue.

          [WARNINGS] Parsing warnings in console log...
          ERROR: Publisher hudson.plugins.warnings.WarningsPublisher aborted due to exception
          hudson.util.IOException2: remote file operation failed: D:\Builds\GTW613 at hudson.remoting.Channel@6c2ea3:172.30.49.111
          at hudson.FilePath.act(FilePath.java:690)
          at hudson.FilePath.act(FilePath.java:676)
          at hudson.plugins.warnings.WarningsPublisher.perform(WarningsPublisher.java:208)
          at hudson.plugins.analysis.core.HealthAwarePublisher.perform(HealthAwarePublisher.java:140)
          at hudson.tasks.BuildStepMonitor$2.perform(BuildStepMonitor.java:27)
          at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:582)
          at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:563)
          at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:550)
          at hudson.model.Build$RunnerImpl.post2(Build.java:152)
          at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:528)
          at hudson.model.Run.run(Run.java:1233)
          at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
          at hudson.model.ResourceController.execute(ResourceController.java:88)
          at hudson.model.Executor.run(Executor.java:122)
          Caused by: java.io.IOException: Remote call on 172.30.49.111 failed
          at hudson.remoting.Channel.call(Channel.java:556)
          at hudson.FilePath.act(FilePath.java:683)
          ... 13 more
          Caused by: java.lang.ClassNotFoundException: Failed to deserialize the Callable object. Perhaps you needed to implement DelegatingCallable?
          at hudson.remoting.UserRequest.perform(UserRequest.java:90)
          at hudson.remoting.UserRequest.perform(UserRequest.java:48)
          at hudson.remoting.Request$2.run(Request.java:244)
          at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
          at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
          at java.util.concurrent.FutureTask.run(Unknown Source)
          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
          at hudson.remoting.Engine$1$1.run(Engine.java:58)
          at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: hudson.plugins.warnings.parser.Warning
          at java.net.URLClassLoader$1.run(Unknown Source)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.net.URLClassLoader.findClass(Unknown Source)
          at java.lang.ClassLoader.loadClass(Unknown Source)
          at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
          at java.lang.ClassLoader.loadClass(Unknown Source)
          at java.lang.ClassLoader.loadClassInternal(Unknown Source)
          at java.lang.Class.forName0(Native Method)
          at java.lang.Class.forName(Unknown Source)
          at java.io.ObjectInputStream.resolveClass(Unknown Source)
          at hudson.remoting.ObjectInputStreamEx.resolveClass(ObjectInputStreamEx.java:50)
          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.readObject(Unknown Source)
          at java.util.HashSet.readObject(Unknown Source)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
          at java.lang.reflect.Method.invoke(Unknown Source)
          at java.io.ObjectStreamClass.invokeReadObject(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.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:168)
          at hudson.remoting.UserRequest.perform(UserRequest.java:88)
          ... 9 more
          Email was triggered for: Success
          Sending email for trigger: Success

          Hudson ver. 1.348

          Costin Caraivan added a comment - [WARNINGS] Parsing warnings in console log... ERROR: Publisher hudson.plugins.warnings.WarningsPublisher aborted due to exception hudson.util.IOException2: remote file operation failed: D:\Builds\GTW613 at hudson.remoting.Channel@6c2ea3:172.30.49.111 at hudson.FilePath.act(FilePath.java:690) at hudson.FilePath.act(FilePath.java:676) at hudson.plugins.warnings.WarningsPublisher.perform(WarningsPublisher.java:208) at hudson.plugins.analysis.core.HealthAwarePublisher.perform(HealthAwarePublisher.java:140) at hudson.tasks.BuildStepMonitor$2.perform(BuildStepMonitor.java:27) at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:582) at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:563) at hudson.model.AbstractBuild$AbstractRunner.performAllBuildStep(AbstractBuild.java:550) at hudson.model.Build$RunnerImpl.post2(Build.java:152) at hudson.model.AbstractBuild$AbstractRunner.post(AbstractBuild.java:528) at hudson.model.Run.run(Run.java:1233) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:122) Caused by: java.io.IOException: Remote call on 172.30.49.111 failed at hudson.remoting.Channel.call(Channel.java:556) at hudson.FilePath.act(FilePath.java:683) ... 13 more Caused by: java.lang.ClassNotFoundException: Failed to deserialize the Callable object. Perhaps you needed to implement DelegatingCallable? at hudson.remoting.UserRequest.perform(UserRequest.java:90) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:244) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at hudson.remoting.Engine$1$1.run(Engine.java:58) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: hudson.plugins.warnings.parser.Warning at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at java.io.ObjectInputStream.resolveClass(Unknown Source) at hudson.remoting.ObjectInputStreamEx.resolveClass(ObjectInputStreamEx.java:50) 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.readObject(Unknown Source) at java.util.HashSet.readObject(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at java.io.ObjectStreamClass.invokeReadObject(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.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:168) at hudson.remoting.UserRequest.perform(UserRequest.java:88) ... 9 more Email was triggered for: Success Sending email for trigger: Success Hudson ver. 1.348

          Ulli Hafner added a comment -

          Did you update your slave.jar? See JENKINS-5209.

          Ulli Hafner added a comment - Did you update your slave.jar? See JENKINS-5209 .

          Ulli Hafner added a comment -

          This should work if you update your slave.jar.

          Ulli Hafner added a comment - This should work if you update your slave.jar.

            drulli Ulli Hafner
            tyu@eridex.org tyu@eridex.org
            Votes:
            9 Vote for this issue
            Watchers:
            9 Start watching this issue

              Created:
              Updated:
              Resolved: