diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c index 660e6bfc21047e6d4d04a43156b5b4d4f6cd5f91..cd38532d94e7996d06648867c28ef31ca6abfaa9 100644 --- a/src/slurmctld/job_mgr.c +++ b/src/slurmctld/job_mgr.c @@ -2227,10 +2227,13 @@ static int _list_find_job_id(void *job_entry, void *key) */ static int _list_find_job_old(void *job_entry, void *key) { - time_t min_age = time(NULL) - slurmctld_conf.min_job_age; + time_t now = time(NULL); + time_t kill_age = now - slurmctld_conf.kill_wait; + time_t min_age = now - slurmctld_conf.min_job_age; struct job_record *job_ptr = (struct job_record *)job_entry; - if (job_ptr->job_state & JOB_COMPLETING) { + if ( (job_ptr->job_state & JOB_COMPLETING) && + (job_ptr->end_time < kill_age) ) { re_kill_job(job_ptr); return 0; /* Job still completing */ }