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

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

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.

        1. bdr_linux_broken_config.xml
          5 kB
          Craig Ringer
        2. bdr_linux_config.xml
          6 kB
          Craig Ringer

            Unassigned Unassigned
            ringerc Craig Ringer
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated: