From ff3712f94cd0144a8ba2489b49f409ae9cf69e92 Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Tue, 29 Jul 2014 14:21:07 -0700
Subject: [PATCH] Capture min and max exit code for job arrays

---
 src/slurmctld/job_mgr.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 5c3e775813c..5ae5c03c343 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -10969,6 +10969,29 @@ extern void job_completion_logger(struct job_record  *job_ptr, bool requeue)
 		}
 	}
 
+	if (job_ptr->array_task_id != NO_VAL) {
+		struct job_record *base_job_ptr;
+		base_job_ptr = find_job_record(job_ptr->array_job_id);
+		if (base_job_ptr->array_recs) {
+			if (base_job_ptr->array_recs->tot_comp_tasks == 0) {
+				base_job_ptr->array_recs->min_exit_code =
+					job_ptr->exit_code;
+				base_job_ptr->array_recs->max_exit_code =
+					job_ptr->exit_code;
+			} else {
+				base_job_ptr->array_recs->min_exit_code =
+					MIN(job_ptr->exit_code, base_job_ptr->
+					    array_recs->min_exit_code);
+				base_job_ptr->array_recs->max_exit_code =
+					MAX(job_ptr->exit_code, base_job_ptr->
+					    array_recs->max_exit_code);
+			}
+			if (base_job_ptr->array_recs->tot_run_tasks)
+				base_job_ptr->array_recs->tot_run_tasks--;
+			base_job_ptr->array_recs->tot_comp_tasks++;
+		}
+	}
+
 	g_slurm_jobcomp_write(job_ptr);
 
 	/* When starting the resized job everything is taken care of
-- 
GitLab