diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c index 5c3e775813c324d1e2f389a3cf86353cb5f11a1a..5ae5c03c34375fc2fc1ec9ebb9fea9fa4a9786ed 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