From d5a05c4b89d7f805df41c6d0a6e76580cbf222b3 Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Tue, 8 Jul 2003 21:55:31 +0000 Subject: [PATCH] slurmctld/agent.c kills a non-startable batch job and releases its allocation. --- src/slurmctld/agent.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/slurmctld/agent.c b/src/slurmctld/agent.c index 3004e02685a..2f8bce72944 100644 --- a/src/slurmctld/agent.c +++ b/src/slurmctld/agent.c @@ -496,6 +496,9 @@ static void *_thread_per_node_rpc(void *args) /* Locks: Write write node */ slurmctld_lock_t node_write_lock = { NO_LOCK, NO_LOCK, WRITE_LOCK, NO_LOCK }; + /* Locks: Write job, write node */ + slurmctld_lock_t job_write_lock = { + NO_LOCK, WRITE_LOCK, WRITE_LOCK, NO_LOCK }; #endif xassert(args != NULL); @@ -549,7 +552,19 @@ static void *_thread_per_node_rpc(void *args) * only do when last node registers */ } unlock_slurmctld(node_write_lock); - } + } + + /* SPECIAL CASE: Kill non-startable batch job */ + if ((msg_type == REQUEST_BATCH_JOB_LAUNCH) && rc) { + batch_job_launch_msg_t *launch_msg_ptr = task_ptr->msg_args_ptr; + uint32_t job_id = launch_msg_ptr->job_id; + info("Killing non-startable batch job %u: %s", job_id, slurm_strerror(rc)); + thread_state = DSH_DONE; + lock_slurmctld(job_write_lock); + job_signal(job_id, SIGKILL, 0); + unlock_slurmctld(job_write_lock); + goto cleanup; + } #endif switch (rc) { -- GitLab