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