SEVERE: Failed Loading plugin Jenkins Selenium Plugin v3.7.2-SNAPSHOT (private-847941f7-nenashev) (selenium)
      java.io.IOException: Failed to initialize
      	at hudson.ClassicPluginStrategy.load(ClassicPluginStrategy.java:531)
      	at hudson.PluginManager$2$1$1.run(PluginManager.java:515)
      	at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:169)
      	at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282)
      	at jenkins.model.Jenkins$5.runTask(Jenkins.java:1063)
      	at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210)
      	at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
      	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.io.IOException: Unable to read /Users/nenashev/Documents/jenkins/plugins/selenium-plugin/work/selenium.xml
      	at hudson.XmlFile.unmarshal(XmlFile.java:182)
      	at hudson.XmlFile.unmarshal(XmlFile.java:162)
      	at hudson.Plugin.load(Plugin.java:264)
      	at hudson.plugins.selenium.PluginImpl.start(PluginImpl.java:143)
      	at hudson.ClassicPluginStrategy.startPlugin(ClassicPluginStrategy.java:539)
      	at hudson.ClassicPluginStrategy.load(ClassicPluginStrategy.java:528)
      	... 9 more
      Caused by: com.thoughtworks.xstream.converters.ConversionException: null : null
      ---- Debugging information ----
      cause-exception     : java.lang.NullPointerException
      cause-message       : null
      class               : hudson.plugins.selenium.PluginImpl
      required-type       : hudson.plugins.selenium.PluginImpl
      converter-type      : hudson.util.RobustReflectionConverter
      path                : /hudson.plugins.selenium.PluginImpl
      line number         : 31
      version             : not available
      -------------------------------
      	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.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
      	at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
      	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1189)
      	at hudson.util.XStream2.unmarshal(XStream2.java:147)
      	at hudson.util.XStream2.unmarshal(XStream2.java:118)
      	at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1173)
      	at hudson.XmlFile.unmarshal(XmlFile.java:179)
      	... 14 more
      Caused by: java.lang.NullPointerException
      	at hudson.diagnosis.OldDataMonitor.report(OldDataMonitor.java:220)
      	at hudson.util.RobustReflectionConverter.doUnmarshal(RobustReflectionConverter.java:371)
      	at hudson.util.RobustReflectionConverter.unmarshal(RobustReflectionConverter.java:270)
      	at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
      	... 24 more
      
      Jan 17, 2018 1:44:03 PM jenkins.InitReactorRunner$1 onAttained
      INFO: Prepared all plugins
      Jan 17, 2018 1:44:03 PM jenkins.InitReactorRunner$1 onAttained
      INFO: Started all plugins
      Jan 17, 2018 1:44:03 PM jenkins.InitReactorRunner$1 onAttained
      
      

          [JENKINS-48985] NPE in OldDataMonitor when reading selenium.xml

          Oleg Nenashev added a comment -

          mobrockers Could you please provide /extra/jenkins/selenium.xml from your instance?

          Oleg Nenashev added a comment - mobrockers Could you please provide /extra/jenkins/selenium.xml from your instance?

          I no longer run a Jenkins instance with this plugin so I cannot provide the file from my instance.

          Rouke Broersma added a comment - I no longer run a Jenkins instance with this plugin so I cannot provide the file from my instance.

          Oleg Nenashev added a comment -

          mobrockers sorry, my intention was to ask pedersen who reported the issue

          Oleg Nenashev added a comment - mobrockers sorry, my intention was to ask pedersen who reported the issue

          Oleg Nenashev added a comment -

          mobrockers BTW, you are listed as a plugin lead in JIRA. Just in case we need a fix for this issue (needs to be confirmed first), would you be able to spin the release?

          Oleg Nenashev added a comment - mobrockers BTW, you are listed as a plugin lead in JIRA. Just in case we need a fix for this issue (needs to be confirmed first), would you be able to spin the release?

          Just added the selenium.xml file

          Björn Pedersen added a comment - Just added the selenium.xml file

          Rouke Broersma added a comment - - edited

          oleg_nenashev I can spin a release yes. I am a bit rusty on plugin config stuff but I think any @Exported thing can cause this problem right? In the plugin sources I found the following exotic exports that were not simple string, int, bool values. A number of them I think will probably save as string anyway because of transitive Exports further down in the object (unless that does not happen by default, like I said, rusty) but maybe this list can help you narrow down if it's caused by JEP-200:

           

          @Exported
          public Map<String, String> getCapabilities() {
          return capabilities;
          }
          
          @Exported
          public List<SeleniumBrowser> getBrowsers() {
          return browsers;
          }
          
          @Exported
          public SeleniumConfigurationMatcher getMatcher() {
          return matcher;
          }
          
          @Exported
          public List<WebDriverBrowser> getBrowsers() {
          return browsers;
          }
          
          @Exported
          public HostnameResolver getHostnameResolver() {
          return hostnameResolver;
          }
          
          @Exported( inline = true )
          public Collection<SeleniumTestSlotGroup> getRemoteControls() throws IOException, InterruptedException {
          
          @Exported
          public List<SeleniumGlobalConfiguration> getGlobalConfigurations() {
          return configurations;
          }
          

          Rouke Broersma added a comment - - edited oleg_nenashev  I can spin a release yes. I am a bit rusty on plugin config stuff but I think any @Exported thing can cause this problem right? In the plugin sources I found the following exotic exports that were not simple string, int, bool values. A number of them I think will probably save as string anyway because of transitive Exports further down in the object (unless that does not happen by default, like I said, rusty) but maybe this list can help you narrow down if it's caused by JEP-200:   @Exported public Map< String , String > getCapabilities() { return capabilities; } @Exported public List<SeleniumBrowser> getBrowsers() { return browsers; } @Exported public SeleniumConfigurationMatcher getMatcher() { return matcher; } @Exported public List<WebDriverBrowser> getBrowsers() { return browsers; } @Exported public HostnameResolver getHostnameResolver() { return hostnameResolver; } @Exported( inline = true ) public Collection<SeleniumTestSlotGroup> getRemoteControls() throws IOException, InterruptedException { @Exported public List<SeleniumGlobalConfiguration> getGlobalConfigurations() { return configurations; }

          Oleg Nenashev added a comment -

          OK, it seems that the plugin fails to convert a valid structure due to whatever reason

          Caused: com.thoughtworks.xstream.converters.ConversionException: null : null ---- Debugging information ---- cause-exception : java.lang.NullPointerException cause-message : null class : hudson.plugins.selenium.PluginImpl required-type : hudson.plugins.selenium.PluginImpl converter-type : hudson.util.RobustReflectionConverter path : /hudson.plugins.selenium.PluginImpl line number : 31 version : not available ------------------------------- at
          

          Whatever happens, it definitely looks like a bug in the Jenkins core.
          It fails because Old Data Monitor is null at the timeframe of data migration.

          I will try to reproduce it once I have progress on JENKINS-48983

          Oleg Nenashev added a comment - OK, it seems that the plugin fails to convert a valid structure due to whatever reason Caused: com.thoughtworks.xstream.converters.ConversionException: null : null ---- Debugging information ---- cause-exception : java.lang.NullPointerException cause-message : null class : hudson.plugins.selenium.PluginImpl required-type : hudson.plugins.selenium.PluginImpl converter-type : hudson.util.RobustReflectionConverter path : /hudson.plugins.selenium.PluginImpl line number : 31 version : not available ------------------------------- at Whatever happens, it definitely looks like a bug in the Jenkins core. It fails because Old Data Monitor is null at the timeframe of data migration. I will try to reproduce it once I have progress on JENKINS-48983

          Oleg Nenashev added a comment -

          mobrockers thanks! It's unlikely (Exporting does not use whitelist) but I will keep it in mind

          Oleg Nenashev added a comment - mobrockers thanks! It's unlikely (Exporting does not use whitelist) but I will keep it in mind

          Oleg Nenashev added a comment -

          pedersen Would you be able to run a "return hudson.diagnosis.OldDataMonitor.get(jenkins.model.Jenkins.instance)" command in the System console? Just to exclude the obvious thing.

          Oleg Nenashev added a comment - pedersen Would you be able to run a "return hudson.diagnosis.OldDataMonitor.get(jenkins.model.Jenkins.instance)" command in the System console? Just to exclude the obvious thing.

          Oleg Nenashev added a comment -

          Cannot reproduce that issue with Selenium locally, but I will keep trying

          Oleg Nenashev added a comment - Cannot reproduce that issue with Selenium locally, but I will keep trying

          oleg_nenashev Keep in mind that according to the selenium config provided by pedersen they are running version 2.3 of the plugin which is really old. The latest plugin version might not actually have the issue so perhaps that's why you can't reproduce.

          Rouke Broersma added a comment - oleg_nenashev Keep in mind that according to the selenium config provided by pedersen they are running version 2.3 of the plugin which is really old. The latest plugin version might not actually have the issue so perhaps that's why you can't reproduce.

          Oleg Nenashev added a comment -

          I have verified the issue on the latest version of the plugin.

          • The provided config XML fails on 2.102
          • It fails on 2.101 as well...

          Whatever the root cause of this issue is, it is not a JEP-200 regression AFAICT. But I will triage it to make sure

          Oleg Nenashev added a comment - I have verified the issue on the latest version of the plugin. The provided config XML fails on 2.102 It fails on 2.101 as well... Whatever the root cause of this issue is, it is not a JEP-200 regression AFAICT. But I will triage it to make sure

          Oleg Nenashev added a comment -

          Likely it is something in the core

          Oleg Nenashev added a comment - Likely it is something in the core

          Rouke Broersma added a comment - - edited

          There were some issues with config not being correctly converted to new plugin config versions in the past. Perhaps their config version is just not compatible with the new versions of the plugin (and the conversion is not working properly). Perhaps it's not a Jenkins problem at all, but simply the plugin having a bug.

          Rouke Broersma added a comment - - edited There were some issues with config not being correctly converted to new plugin config versions in the past. Perhaps their config version is just not compatible with the new versions of the plugin (and the conversion is not working properly). Perhaps it's not a Jenkins problem at all, but simply the plugin having a bug.

          Oleg Nenashev added a comment -

          Meanwhile I ran Plugin Compatibility Tester. With all current tests the plugin works well on Jenkins 2.102

          Oleg Nenashev added a comment - Meanwhile I ran Plugin Compatibility Tester. With all current tests the plugin works well on Jenkins 2.102

          Oleg Nenashev added a comment -

          mobrockers Maybe we will have to split it to two issues. Old Data Monitor failing with NPE does seem like a core bug, independently of what causes that.
          If you prefer, I can move it to a separate ticket.

          Oleg Nenashev added a comment - mobrockers Maybe we will have to split it to two issues. Old Data Monitor failing with NPE does seem like a core bug, independently of what causes that. If you prefer, I can move it to a separate ticket.

          The selenium bug does not really have priority as no users of the plugin should be on such an old version anyway. You can keep the ticket for the core bug and I will create my own.

          Rouke Broersma added a comment - The selenium bug does not really have priority as no users of the plugin should be on such an old version anyway. You can keep the ticket for the core bug and I will create my own.

          "return hudson.diagnosis.OldDataMonitor.get(jenkins.model.Jenkins.instance)"

           =>

           

          hudson.diagnosis.OldDataMonitor@b3fef1

           

          Björn Pedersen added a comment - "return hudson.diagnosis.OldDataMonitor.get(jenkins.model.Jenkins.instance)"  =>   hudson.diagnosis.OldDataMonitor@b3fef1  

          An update: After all other plugins that had JEP-200 problems are fixed, this error is gone again.

          Björn Pedersen added a comment - An update: After all other plugins that had JEP-200 problems are fixed, this error is gone again.

          Oleg Nenashev added a comment -

          OK, so let's consider that there is no new issues in the Selenium plugin itself.
          I will handle this ticket on the core's side

          Oleg Nenashev added a comment - OK, so let's consider that there is no new issues in the Selenium plugin itself. I will handle this ticket on the core's side

          Petres Andras added a comment -

          I ran into the same issue when working on a change on gerrit-trigger plugin. My guess is that OldDataMonitor gets initialized after the plugin is loaded.

          What I did was removing a field from a persisted class. After Jenkins gets restarted it tries to load the old config XML file (which contains the deleted field) and boom, it cannot report it because OldDataMonitor is null.

          Petres Andras added a comment - I ran into the same issue when working on a change on gerrit-trigger plugin. My guess is that OldDataMonitor gets initialized after the plugin is loaded. What I did was removing a field from a persisted class. After Jenkins gets restarted it tries to load the old config XML file (which contains the deleted field) and boom, it cannot report it because OldDataMonitor is null.

          Oleg Nenashev added a comment -

          Diagnostics was improved in 2.163.

          apetres if you still experience the issue, it would be great to have updated stacktraces after the update

          Oleg Nenashev added a comment - Diagnostics was improved in 2.163. apetres if you still experience the issue, it would be great to have updated stacktraces after the update

            oleg_nenashev Oleg Nenashev
            pedersen Björn Pedersen
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated: