diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c index 7098096f364fccc9cc2646bd0bc9caa52d9cba63..47ffe183d2afbcfa8d8a6c86155db51b50ba692d 100644 --- a/src/slurmctld/job_mgr.c +++ b/src/slurmctld/job_mgr.c @@ -3786,6 +3786,7 @@ extern int job_str_signal(char *job_id_str, uint16_t signal, uint16_t flags, } job_id = (uint32_t) long_id; if (end_ptr[0] == '\0') { /* Single job (or full job array) */ + int jobs_done = 0, jobs_signalled = 0; struct job_record *job_ptr_done = NULL; job_ptr = find_job_record(job_id); if (job_ptr && (job_ptr->array_task_id == NO_VAL) && @@ -3797,6 +3798,11 @@ extern int job_str_signal(char *job_id_str, uint16_t signal, uint16_t flags, if (job_ptr && job_ptr->array_recs) { /* This is a job array */ rc = _job_signal(job_ptr, signal, flags, uid, preempt); + jobs_signalled++; + if (rc == ESLURM_ALREADY_DONE) { + jobs_done++; + rc = SLURM_SUCCESS; + } job_ptr_done = job_ptr; } @@ -3811,10 +3817,17 @@ extern int job_str_signal(char *job_id_str, uint16_t signal, uint16_t flags, (job_ptr != job_ptr_done)) { rc2 = _job_signal(job_ptr, signal, flags, uid, preempt); - rc = MAX(rc, rc2); + jobs_signalled++; + if (rc2 == ESLURM_ALREADY_DONE) { + jobs_done++; + } else { + rc = MAX(rc, rc2); + } } job_ptr = job_ptr->job_array_next_j; } + if ((rc == SLURM_SUCCESS) && (jobs_done == jobs_signalled)) + return ESLURM_ALREADY_DONE; return rc; } diff --git a/src/slurmctld/proc_req.c b/src/slurmctld/proc_req.c index fe6be06baa82ab751894eb2e846eabee2d8e174b..5c994ad292ad48455a77bb3733d3afba61aa4042 100644 --- a/src/slurmctld/proc_req.c +++ b/src/slurmctld/proc_req.c @@ -3844,7 +3844,6 @@ inline static void _slurm_rpc_requeue(slurm_msg_t * msg) info("%s: Processing RPC: REQUEST_JOB_REQUEUE from uid=%d", __func__, uid); -info("Req:%u:%s:", req_ptr->job_id, req_ptr->job_id_str); lock_slurmctld(job_write_lock); if (req_ptr->job_id_str) { error_code = job_requeue2(uid, req_ptr, msg->conn_fd,