def LaunchJob = { jobName, jobInfo ->
def job = Hudson.instance.getJob(jobName)
+ if (job == null) {
+ println(String.format("Failed to find job by name '%s'", jobName))
+ return null;
+ }
def params = []
for (paramdef in job.getProperty(ParametersDefinitionProperty.class).getParameterDefinitions()) {
// If there is a default value for this parameter, use it. Don't use empty
jobInfo['status'] = 'PENDING';
jobInfo['build'] = LaunchJob(jobName, jobInfo);
- ongoingJobs += 1;
+ if (jobInfo['build'] != null) {
+ ongoingJobs += 1;
+ }
+}
+
+// Some jobs may have a null build immediately if LaunchJob
+// failed for some reason, those jobs can immediately be removed.
+def jobKeys = currentJobs.collect { jobName, jobInfo ->
+ return jobName;
+}
+jobKeys.each { k ->
+ if (currentJobs.get(k)['build'] == null) {
+ println(String.format("Removing job '%s' since build is null", k));
+ currentJobs.remove(k);
+ }
}
while (ongoingJobs > 0) {