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

Jobs with syntactically incorrect config missing the cron spec for a trigger produces NullPointerException

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • core

      To re-produce you just need to use the https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin and not use the "cron('H/5 * * * *')" as the documentation says.

      Then, the following stacktrace is triggered:

      Jun 23, 2016 10:35:00 AM hudson.triggers.Trigger$Cron doRun
      WARNING: Cron thread throw an exception
      java.lang.NullPointerException
          at hudson.triggers.Trigger.checkTriggers(Trigger.java:267)
          at hudson.triggers.Trigger$Cron.doRun(Trigger.java:221)
          at hudson.triggers.SafeTimerTask.run(SafeTimerTask.java:50)
          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
          at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
          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)
      

      Any cron job on the instance will work because of this issue

          [JENKINS-36748] Jobs with syntactically incorrect config missing the cron spec for a trigger produces NullPointerException

          Daniel Beck added a comment -

          Fixed in 2.15

          Daniel Beck added a comment - Fixed in 2.15

          Jesse Glick added a comment -

          I would say this may not have been a defect to begin with. The plugin documentation describes the proper usage of this trigger with Job DSL. The Jenkins GUI will ensure that cron is non-null, but from a scripted client like Job DSL you are expected to define all mandatory fields. If cron is meaningfully optional in this context—some Trigger implementations do not really require it, because they have an empty run, though I think this one does—then Trigger.readResolve should set it to the empty string rather than null.

          Jesse Glick added a comment - I would say this may not have been a defect to begin with. The plugin documentation describes the proper usage of this trigger with Job DSL. The Jenkins GUI will ensure that cron is non-null, but from a scripted client like Job DSL you are expected to define all mandatory fields. If cron is meaningfully optional in this context—some Trigger implementations do not really require it, because they have an empty run , though I think this one does—then Trigger.readResolve should set it to the empty string rather than null.

          Daniel Beck added a comment -

          jglick It's ugly – further investigation showed that the problem is that GhprbTrigger#readResolve doesn't call super.readResolve() – which would prevent the invalid trigger from being created.

          Still a valid robustness improvement IMO.

          Daniel Beck added a comment - jglick It's ugly – further investigation showed that the problem is that GhprbTrigger#readResolve doesn't call super.readResolve() – which would prevent the invalid trigger from being created. Still a valid robustness improvement IMO.

          Code changed in jenkins
          User: Felix Belzunce Arcos
          Path:
          core/src/main/java/hudson/triggers/Trigger.java
          test/src/test/java/hudson/triggers/TriggerTest.java
          http://jenkins-ci.org/commit/jenkins/4278804582b34f123414bde521bd91b009d8e353
          Log:
          JENKINS-36748 Do not process null specs in triggers (#2482)

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Felix Belzunce Arcos Path: core/src/main/java/hudson/triggers/Trigger.java test/src/test/java/hudson/triggers/TriggerTest.java http://jenkins-ci.org/commit/jenkins/4278804582b34f123414bde521bd91b009d8e353 Log: JENKINS-36748 Do not process null specs in triggers (#2482) JENKINS-36748 Add a test case and not process null specs JENKINS-36748 Correct license and add a minor comment JENKINS-36748 Add a Waning logger when spec is null

          Oleg Nenashev added a comment -

          Additional fix has been merged towards jenkins-2.20

          Oleg Nenashev added a comment - Additional fix has been merged towards jenkins-2.20

          Code changed in jenkins
          User: Felix Belzunce Arcos
          Path:
          core/src/main/java/hudson/triggers/Trigger.java
          test/src/test/java/hudson/triggers/TriggerTest.java
          http://jenkins-ci.org/commit/jenkins/a59dd9d45f544b6464bf0574ab5a0bb12b7d7008
          Log:
          JENKINS-36748 Do not process null specs in triggers (#2482)

          (cherry picked from commit 4278804582b34f123414bde521bd91b009d8e353)

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Felix Belzunce Arcos Path: core/src/main/java/hudson/triggers/Trigger.java test/src/test/java/hudson/triggers/TriggerTest.java http://jenkins-ci.org/commit/jenkins/a59dd9d45f544b6464bf0574ab5a0bb12b7d7008 Log: JENKINS-36748 Do not process null specs in triggers (#2482) JENKINS-36748 Add a test case and not process null specs JENKINS-36748 Correct license and add a minor comment JENKINS-36748 Add a Waning logger when spec is null (cherry picked from commit 4278804582b34f123414bde521bd91b009d8e353)

            fbelzunc Félix Belzunce Arcos
            fbelzunc Félix Belzunce Arcos
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: