From 256275c1a3c9f2b45e1168dde4a8ea39cda7f7ae Mon Sep 17 00:00:00 2001 From: Morris Jette <jette@schedmd.com> Date: Tue, 29 Jul 2014 11:48:09 -0700 Subject: [PATCH] Fix for job array record find logic Previous logic could miss master pending job array record --- src/slurmctld/job_mgr.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c index 7870dda36e3..b72858795fa 100644 --- a/src/slurmctld/job_mgr.c +++ b/src/slurmctld/job_mgr.c @@ -2253,6 +2253,14 @@ extern struct job_record *find_job_array_rec(uint32_t array_job_id, } job_ptr = job_ptr->job_array_next_j; } + if (match_job_ptr) + return match_job_ptr; + + /* Look for job record with all of the pending tasks */ + job_ptr = find_job_record(array_job_id); + if (job_ptr && job_ptr->array_recs && + (job_ptr->array_job_id == array_job_id)) + return job_ptr; return match_job_ptr; } else { /* Find specific task ID */ inx = JOB_ARRAY_HASH_INX(array_job_id, array_task_id); @@ -2266,7 +2274,7 @@ extern struct job_record *find_job_array_rec(uint32_t array_job_id, } /* Look for job record with all of the pending tasks */ job_ptr = find_job_record(array_job_id); - if (job_ptr &&job_ptr->array_recs && + if (job_ptr && job_ptr->array_recs && job_ptr->array_recs->task_id_bitmap) { inx = bit_size(job_ptr->array_recs->task_id_bitmap); if ((array_task_id < inx) && -- GitLab