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

Publish over SSH plugin XML configuration cannot be read on jenkins start up.

      The XML configuration for the publish over ssh plugin fails to load in the current (1.504) version of jenkins and the plugin (1.10). On my system, the file is located at: /var/lib/jenkins/jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml.

      It seems to be an issue with xstream conversion. Here's the relevant bit of the stack trace (full trace is at the bottom).

      Caused by: com.thoughtworks.xstream.converters.ConversionException: object is not an instance of declaring class : object is not an instance of declaring class
      ---- Debugging information ----
      message : object is not an instance of declaring class
      cause-exception : java.lang.IllegalArgumentException
      cause-message : object is not an instance of declaring class
      class : jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
      required-type : jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
      converter-type : hudson.util.RobustReflectionConverter
      path : /jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin$Descriptor/hostConfigurations/jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
      line number : 25
      class[1] : hudson.util.CopyOnWriteList
      converter-type[1] : hudson.util.XStream2$AssociatedConverterImpl
      class[2] : jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin$Descriptor
      version : null
      -------------------------------

      Jenkins still starts, however the configured ssh hosts do not show up. The configuration element that ends on line 25 is:

      <jenkins.plugins.publish_over_ssh.BapSshHostConfiguration>
      <name>[redacted]</name>
      <hostname>[redacted]</hostname>
      <username>[redacted]</username>
      <secretPassword>[redacted]</secretPassword>
      <remoteRootDir>[redacted]</remoteRootDir>
      <port>22</port>
      <commonConfig class="jenkins.plugins.publish_over_ssh.BapSshCommonConfiguration">
      <secretPassphrase>[redacted]</secretPassphrase>
      <key></key>
      <keyPath>.ssh/id_rsa</keyPath>
      <disableAllExec>false</disableAllExec>
      </commonConfig>
      <timeout>300000</timeout>
      <overrideKey>false</overrideKey>
      <disableExec>false</disableExec>
      <keyInfo>
      <secretPassphrase>[redacted]</secretPassphrase>
      <key></key>
      <keyPath></keyPath>
      </keyInfo>
      </jenkins.plugins.publish_over_ssh.BapSshHostConfiguration>

      The full stack trace:

      WARNING: Failed to load /var/lib/jenkins/jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml
      hudson.util.IOException2: Unable to read /var/lib/jenkins/jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml
      at hudson.XmlFile.unmarshal(XmlFile.java:164)
      at hudson.model.Descriptor.load(Descriptor.java:806)
      at jenkins.plugins.publish_over_ssh.descriptor.BapSshPublisherPluginDescriptor.<init>(BapSshPublisherPluginDescriptor.java:68)
      at jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin$Descriptor.<init>(BapSshPublisherPlugin.java:81)
      at jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin$Descriptor$$FastClassByGuice$$c0ccaf36.newInstance(<generated>)
      at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40)
      at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61)
      at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:108)
      at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:87)
      at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:259)
      at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
      at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1018)
      at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
      at com.google.inject.Scopes$1$1.get(Scopes.java:59)
      at hudson.ExtensionFinder$GuiceFinder$4$1.get(ExtensionFinder.java:422)
      at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
      at com.google.inject.internal.InjectorImpl$3$1.call(InjectorImpl.java:965)
      at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1011)
      at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:961)
      at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:391)
      at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:382)
      at hudson.ExtensionFinder._find(ExtensionFinder.java:151)
      at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:318)
      at hudson.ExtensionList.load(ExtensionList.java:295)
      at hudson.ExtensionList.ensureLoaded(ExtensionList.java:248)
      at hudson.ExtensionList.iterator(ExtensionList.java:138)
      at jenkins.model.Jenkins.getDescriptorByType(Jenkins.java:1171)
      at hudson.plugins.copyartifact.BuildSelectorParameter.initAliases(BuildSelectorParameter.java:100)
      at hudson.plugins.copyartifact.CopyArtifactPlugin.postInitialize(CopyArtifactPlugin.java:35)
      at hudson.PluginManager$2$1$2.run(PluginManager.java:352)
      at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:146)
      at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259)
      at jenkins.model.Jenkins$7.runTask(Jenkins.java:883)
      at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187)
      at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at java.lang.Thread.run(Thread.java:679)
      Caused by: com.thoughtworks.xstream.converters.ConversionException: object is not an instance of declaring class : object is not an instance of declaring class
      ---- Debugging information ----
      message : object is not an instance of declaring class
      cause-exception : java.lang.IllegalArgumentException
      cause-message : object is not an instance of declaring class
      class : jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
      required-type : jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
      converter-type : hudson.util.RobustReflectionConverter
      path : /jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin$Descriptor/hostConfigurations/jenkins.plugins.publish_over_ssh.BapSshHostConfiguration
      line number : 25
      class[1] : hudson.util.CopyOnWriteList
      converter-type[1] : hudson.util.XStream2$AssociatedConverterImpl
      class[2] : jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin$Descriptor
      version : null
      -------------------------------
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:79)
      at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
      at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
      at hudson.util.CopyOnWriteList$ConverterImpl.unmarshal(CopyOnWriteList.java:193)
      at hudson.util.CopyOnWriteList$ConverterImpl.unmarshal(CopyOnWriteList.java:172)
      at hudson.util.XStream2$AssociatedConverterImpl.unmarshal(XStream2.java:337)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
      at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
      at hudson.util.RobustReflectionConverter.unmarshalField(RobustReflectionConverter.java:333)
      at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:275)
      at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:222)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
      at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
      at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
      at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1061)
      at hudson.util.XStream2.unmarshal(XStream2.java:109)
      at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1045)
      at hudson.XmlFile.unmarshal(XmlFile.java:160)
      ... 37 more
      Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
      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:616)
      at com.thoughtworks.xstream.converters.reflection.SerializationMethodInvoker.callReadResolve(SerializationMethodInvoker.java:66)
      at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:223)
      at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
      ... 60 more

          [JENKINS-17058] Publish over SSH plugin XML configuration cannot be read on jenkins start up.

          Thomas Van Doren created issue -

          Thomas Van Doren added a comment - - edited

          [UPDATE: this only works while jenkins is running. The jenkins start up is still unable to parse the xml file.]

          I manually re-entered all of the hosts and jenkins is now able to parse the newly created file. The main differences between the new one that works and the old one that doesn't are (old version is on top):

          2c2
          < <jenkins.plugins.publish_overssh.BapSshPublisherPlugin-Descriptor plugin="publish-over-ssh@1.9">

          > <jenkins.plugins.publish_overssh.BapSshPublisherPlugin-Descriptor plugin="publish-over-ssh@1.10">

          181,217c181
          < <defaults class="jenkins.plugins.publish_over_ssh.options.SshOverrideDefaults">
          ... (a bunch of default configs)
          < </defaults>

          > <defaults class="jenkins.plugins.publish_over_ssh.options.SshPluginDefaults"/>

          Note that the defaults class attribute is different.

          Thomas Van Doren added a comment - - edited [UPDATE: this only works while jenkins is running. The jenkins start up is still unable to parse the xml file.] I manually re-entered all of the hosts and jenkins is now able to parse the newly created file. The main differences between the new one that works and the old one that doesn't are (old version is on top): 2c2 < <jenkins.plugins.publish_ over ssh.BapSshPublisherPlugin -Descriptor plugin="publish-over-ssh@1.9"> — > <jenkins.plugins.publish_ over ssh.BapSshPublisherPlugin -Descriptor plugin="publish-over-ssh@1.10"> 181,217c181 < <defaults class="jenkins.plugins.publish_over_ssh.options.SshOverrideDefaults"> ... (a bunch of default configs) < </defaults> — > <defaults class="jenkins.plugins.publish_over_ssh.options.SshPluginDefaults"/> Note that the defaults class attribute is different.

          Nick Pannu added a comment -

          Same issue, went from v1.7 to v1.10 of the plugin as well as v1.504 of Jenkins.

          Lost about 25 configured ssh connections, which is not realistic to re-enter every time Jenkins is restarted.

          Nick Pannu added a comment - Same issue, went from v1.7 to v1.10 of the plugin as well as v1.504 of Jenkins. Lost about 25 configured ssh connections, which is not realistic to re-enter every time Jenkins is restarted.

          I eventually rolled back to jenkins version 1.501 and publish over ssh version 1.9. I'm not aware of any other work arounds at this time.

          Thomas Van Doren added a comment - I eventually rolled back to jenkins version 1.501 and publish over ssh version 1.9. I'm not aware of any other work arounds at this time.

          bap added a comment -

          @Thomas, I'm glad you found a workaround. Is there any chance that you could try using 1.10 on Jenkins 1.501 and see if the problem is reproducible on that version of Jenkins.

          @Nick, were you running 1.7 on Jenkins 1.504, or did you upgrade the plugin and Jenkins at the same time? Which version did you upgrade from?

          bap added a comment - @Thomas, I'm glad you found a workaround. Is there any chance that you could try using 1.10 on Jenkins 1.501 and see if the problem is reproducible on that version of Jenkins. @Nick, were you running 1.7 on Jenkins 1.504, or did you upgrade the plugin and Jenkins at the same time? Which version did you upgrade from?
          bap made changes -
          Link New: This issue is related to JENKINS-17112 [ JENKINS-17112 ]
          bap made changes -
          Link New: This issue is related to JENKINS-17112 [ JENKINS-17112 ]

          bap added a comment -

          Someone has just reported an issue about data persistence in the Publish Over CIFS plugin when using Jenkins 1.504.

          The po-cifs plugin has not changed for a very long time, so I suspect that something in core in 1.504 (and maybe earlier) is broken

          bap added a comment - Someone has just reported an issue about data persistence in the Publish Over CIFS plugin when using Jenkins 1.504. The po-cifs plugin has not changed for a very long time, so I suspect that something in core in 1.504 (and maybe earlier) is broken
          bap made changes -
          Link Original: This issue is related to JENKINS-17112 [ JENKINS-17112 ]
          bap made changes -
          Link New: This issue is related to JENKINS-12542 [ JENKINS-12542 ]

            thomasvandoren Thomas Van Doren
            thomasvandoren Thomas Van Doren
            Votes:
            30 Vote for this issue
            Watchers:
            46 Start watching this issue

              Created:
              Updated:
              Resolved: