You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[JENKINS-36748] Jobs with syntactically incorrect config missing the cron spec for a trigger produces NullPointerException #17349
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
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
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.
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.
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.
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.
Activity
jenkins-infra-bot commentedon Jul 25, 2016
Raw content of original comment:
Fixed in 2.15
jenkins-infra-bot commentedon Jul 27, 2016
Raw content of original 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.
jenkins-infra-bot commentedon Jul 27, 2016
Raw content of original 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.
jenkins-infra-bot commentedon Aug 24, 2016
Raw content of original comment:
JENKINS-36748Add a test case and not process null specsJENKINS-36748Correct license and add a minor commentJENKINS-36748Add a Waning logger when spec is nullCode 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-36748Do not process null specs in triggers (#2482)JENKINS-36748Add a test case and not process null specsJENKINS-36748Correct license and add a minor commentJENKINS-36748Add a Waning logger when spec is nulljenkins-infra-bot commentedon Aug 27, 2016
Raw content of original comment:
Additional fix has been merged towards jenkins-2.20
jenkins-infra-bot commentedon Sep 9, 2016
Raw content of original comment:
JENKINS-36748Add a test case and not process null specsJENKINS-36748Correct license and add a minor commentJENKINS-36748Add a Waning logger when spec is null(cherry picked from commit 4278804582b34f123414bde521bd91b009d8e353)
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-36748Do not process null specs in triggers (#2482)JENKINS-36748Add a test case and not process null specsJENKINS-36748Correct license and add a minor commentJENKINS-36748Add a Waning logger when spec is null(cherry picked from commit 4278804)