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

FilePath.writeObject() exception when saving configuration

    Details

    • Similar Issues:

      Description

      Hi,

      Once a job has been running, its configuration can't be updated anymore, when doing so, the exception below is thrown.
      I suspect that the configuration stays attached to the slave's channel and thus the data can't be serialized anymore with FilePath…

      I had to restart jenkins for this to work again…

      javax.servlet.ServletException: java.lang.RuntimeException: Failed to serialize hudson.maven.MavenModuleSet#postbuilders for class hudson.maven.MavenModuleSet
          at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
          at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249)
          at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
          at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
          at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249)
          at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
          at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
          at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
          at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:123)
          at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:120)
          at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:114)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
          at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
          at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
          at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
          at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
          at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
          at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
          at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
          at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
          at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
          at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
          at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
          at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
          at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
          at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
          at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
          at org.eclipse.jetty.server.Server.handle(Server.java:370)
          at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
          at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
          at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
          at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
          at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
          at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
          at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
          at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
          at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
          at java.lang.Thread.run(Thread.java:745)
      Caused by: java.lang.RuntimeException: Failed to serialize hudson.maven.MavenModuleSet#postbuilders for class hudson.maven.MavenModuleSet
          at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:214)
          at hudson.util.RobustReflectionConverter$2.visit(RobustReflectionConverter.java:182)
          at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:138)
          at hudson.util.RobustReflectionConverter.doMarshal(RobustReflectionConverter.java:167)
          at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:108)
          at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:69)
          at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
          at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:43)
          at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:82)
          at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.marshal(AbstractTreeMarshallingStrategy.java:37)
          at com.thoughtworks.xstream.XStream.marshal(XStream.java:1026)
          at com.thoughtworks.xstream.XStream.marshal(XStream.java:1015)
          at com.thoughtworks.xstream.XStream.toXML(XStream.java:988)
          at hudson.XmlFile.write(XmlFile.java:178)
          at hudson.model.AbstractItem.save(AbstractItem.java:513)
          at hudson.model.Job.save(Job.java:177)
          at hudson.model.AbstractProject.save(AbstractProject.java:303)
          at hudson.model.AbstractItem.setDisplayName(AbstractItem.java:168)
          at hudson.model.Job.doConfigSubmit(Job.java:1186)
          at hudson.model.AbstractProject.doConfigSubmit(AbstractProject.java:788)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:606)
          at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
          at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
          at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
          at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:121)
          at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
          at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
          ... 69 more
      Caused by: java.lang.RuntimeException: Failed to serialize org.jenkinsci.plugins.DependencyCheck.AbstractDependencyCheckBuilder#options for class org.jenkinsci.plugins.DependencyCheck.DependencyCheckBuilder
          at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:214)
          at hudson.util.RobustReflectionConverter$2.visit(RobustReflectionConverter.java:182)
          at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:138)
          at hudson.util.RobustReflectionConverter.doMarshal(RobustReflectionConverter.java:167)
          at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:108)
          at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:69)
          at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
          at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:43)
          at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:88)
          at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.writeItem(AbstractCollectionConverter.java:64)
          at hudson.util.DescribableList$ConverterImpl.marshal(DescribableList.java:269)
          at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:69)
          at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
          at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:84)
          at hudson.util.RobustReflectionConverter.marshallField(RobustReflectionConverter.java:223)
          at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:210)
          ... 98 more
      Caused by: java.lang.RuntimeException: Failed to serialize org.jenkinsci.plugins.DependencyCheck.Options#suppressionFile for class org.jenkinsci.plugins.DependencyCheck.Options
          at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:214)
          at hudson.util.RobustReflectionConverter$2.visit(RobustReflectionConverter.java:182)
          at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:138)
          at hudson.util.RobustReflectionConverter.doMarshal(RobustReflectionConverter.java:167)
          at hudson.util.RobustReflectionConverter.marshal(RobustReflectionConverter.java:108)
          at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:69)
          at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
          at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:84)
          at hudson.util.RobustReflectionConverter.marshallField(RobustReflectionConverter.java:223)
          at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:210)
          ... 113 more
      Caused by: com.thoughtworks.xstream.converters.ConversionException: Could not call hudson.FilePath.writeObject() : Can't send a remote FilePath to a different remote channel
      ---- Debugging information ----
      message             : Could not call hudson.FilePath.writeObject()
      cause-exception     : java.lang.IllegalStateException
      cause-message       : Can't send a remote FilePath to a different remote channel
      -------------------------------
          at com.thoughtworks.xstream.converters.reflection.SerializationMethodInvoker.callWriteObject(SerializationMethodInvoker.java:141)
          at com.thoughtworks.xstream.converters.reflection.SerializableConverter.doMarshal(SerializableConverter.java:259)
          at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:83)
          at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:69)
          at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58)
          at com.thoughtworks.xstream.core.AbstractReferenceMarshaller$1.convertAnother(AbstractReferenceMarshaller.java:84)
          at hudson.util.RobustReflectionConverter.marshallField(RobustReflectionConverter.java:223)
          at hudson.util.RobustReflectionConverter$2.writeField(RobustReflectionConverter.java:210)
          ... 122 more
      Caused by: java.lang.IllegalStateException: Can't send a remote FilePath to a different remote channel
          at hudson.FilePath.writeObject(FilePath.java:2642)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke(Method.java:606)
          at com.thoughtworks.xstream.converters.reflection.SerializationMethodInvoker.callWriteObject(SerializationMethodInvoker.java:135)
          ... 129 more
      

        Attachments

          Activity

          Hide
          sspringett Steve Springett added a comment -

          What is the Jenkins version?
          What is the version of the Dependency-Check Jenkins plugin?

          Are you attempting to update the configuration while a Dependency-Check job is running?

          Show
          sspringett Steve Springett added a comment - What is the Jenkins version? What is the version of the Dependency-Check Jenkins plugin? Are you attempting to update the configuration while a Dependency-Check job is running?
          Hide
          victornoel Victor Noël added a comment -

          I'm using:

          • Jenkins version 1.611 (I'm stuck with it because we are using Maven jobs that needs Java 6 and they can't be run with Java 7 with the jenkins maven plugin).
          • Dependency-Check Jenkins plugin version 1.3.1 (latest according to Jenkins).

          I tried different things:

          • updating the configuration while a Dependency-Check job was running.
          • then I cancelled the job because I thought it was linked but the error was still there.
          • then on another job using Dependency-Check and that ended successfully, the bug manifested itself too.

          I think things started when I filled the suppressionFile field.
          Note also that if I just remove all the Dependency-Check configuration from the job configuration and save, the error appears too!

          Show
          victornoel Victor Noël added a comment - I'm using: Jenkins version 1.611 (I'm stuck with it because we are using Maven jobs that needs Java 6 and they can't be run with Java 7 with the jenkins maven plugin). Dependency-Check Jenkins plugin version 1.3.1 (latest according to Jenkins). I tried different things: updating the configuration while a Dependency-Check job was running. then I cancelled the job because I thought it was linked but the error was still there. then on another job using Dependency-Check and that ended successfully, the bug manifested itself too. I think things started when I filled the suppressionFile field. Note also that if I just remove all the Dependency-Check configuration from the job configuration and save, the error appears too!
          Hide
          sspringett Steve Springett added a comment -

          I only test with LTS releases of Jenkins. Currently, I test with 1.609.1.

          I run the slaves under Java 8 and while using the latest snapshot of 1.3.2, I cannot reproduce the issue.

          Is your master or slave node Windows by chance? I usually don't test on Windows except for platform-specific features, like the .NET assembly analyzer and the NuSpec analyzer.

          Show
          sspringett Steve Springett added a comment - I only test with LTS releases of Jenkins. Currently, I test with 1.609.1. I run the slaves under Java 8 and while using the latest snapshot of 1.3.2, I cannot reproduce the issue. Is your master or slave node Windows by chance? I usually don't test on Windows except for platform-specific features, like the .NET assembly analyzer and the NuSpec analyzer.
          Hide
          victornoel Victor Noël added a comment -

          No, I'm only using Linux, Java 7 and this version of jenkins which should be quite close to the LTS one.

          Maybe something shady happened... anyway, since you removed the use of FilePath for the suppression file in latest SNAPSHOT, this current bug doesn't mean anything any more, I think you can close it
          Thanks!

          Show
          victornoel Victor Noël added a comment - No, I'm only using Linux, Java 7 and this version of jenkins which should be quite close to the LTS one. Maybe something shady happened... anyway, since you removed the use of FilePath for the suppression file in latest SNAPSHOT, this current bug doesn't mean anything any more, I think you can close it Thanks!
          Hide
          victornoel Victor Noël added a comment -

          I'm closing it, I think it was a problem on my side

          Show
          victornoel Victor Noël added a comment - I'm closing it, I think it was a problem on my side

            People

            • Assignee:
              sspringett Steve Springett
              Reporter:
              victornoel Victor Noël
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: