Invalid <null/> element added to <triggers/> in job causing NPE on job load

This issue is archived. You can view it, but you can't modify it. Learn more

XMLWordPrintable

      On several occasions recently, while editing my matrix jobs, I've noticed that Jenkins has lost the SCM configuration for git polling and replaced it with an invalid entry in the job xml:

      <triggers>
        <null/>
      </triggers>
      

      that causes the job to fail to load when Jenkins is restarted, with:

      Failed Loading job bdr_linux
      java.lang.NullPointerException
      	at hudson.model.AbstractProject.onLoad(AbstractProject.java:326)
      	at hudson.matrix.MatrixProject.onLoad(MatrixProject.java:496)
      	at hudson.model.Items.load(Items.java:279)
      	at jenkins.model.Jenkins$18.run(Jenkins.java:2599)
      	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$7.runTask(Jenkins.java:885)
      	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:1146)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:701)
      

      I haven't yet nailed down a way to reproduce this, but it seems to occur most often around when I've also been having issues with configuration elements throwing exceptions on save.

      The job appears to just "vanish" from the job list, as Jenkins doesn't show broken jobs in the UI at all. To find out what happened I had to go digging in the config XML.

      I version my configuration XML, so I was able to see the following in the most recent diff for jobs/bdr_linux/config.xml:

         <triggers>
      -    <hudson.triggers.SCMTrigger>
      -      <spec>H/5 * * * *</spec>
      -      <ignorePostCommitHooks>false</ignorePostCommitHooks>
      -    </hudson.triggers.SCMTrigger>
      +    <null/>
         </triggers>
      

      To repair the job, I can revert that hunk, or just delete the invalid null element then re-create the trigger in the UI.

      So there are a couple of problems here:

      • A null element like that is invalid and should never be written out, as it cannot be consumed; and
      • the trigger configuration is being lost.

            Assignee:
            Unassigned
            Reporter:
            Craig Ringer
            Archiver:
            Jenkins Service Account

              Created:
              Updated:
              Archived: