diff --git a/src/api/step_launch.c b/src/api/step_launch.c index a7d51913290a3b8233e59e5f3031fc3b30bbe906..483d4411db58f5404454835df1043dea7d084def 100644 --- a/src/api/step_launch.c +++ b/src/api/step_launch.c @@ -1119,9 +1119,12 @@ _job_complete_handler(struct step_launch_state *sls, slurm_msg_t *complete_msg) step_msg->job_id, step_msg->step_id); } - /* FIXME: does nothing yet */ + if (sls->callback.step_signal) + (sls->callback.step_signal)(SIGKILL); + force_terminated_job = true; pthread_mutex_lock(&sls->lock); + sls->abort = true; pthread_cond_broadcast(&sls->cond); pthread_mutex_unlock(&sls->lock); } @@ -1129,8 +1132,12 @@ _job_complete_handler(struct step_launch_state *sls, slurm_msg_t *complete_msg) static void _timeout_handler(struct step_launch_state *sls, slurm_msg_t *timeout_msg) { - /* FIXME: does nothing yet */ + if (sls->callback.step_signal) + (sls->callback.step_signal)(SIGKILL); + + force_terminated_job = true; pthread_mutex_lock(&sls->lock); + sls->abort = true; pthread_cond_broadcast(&sls->cond); pthread_mutex_unlock(&sls->lock); } @@ -1442,11 +1449,6 @@ _handle_msg(void *arg, slurm_msg_t *msg) break; case SRUN_JOB_COMPLETE: debug2("received job step complete message"); - force_terminated_job = true; - pthread_mutex_lock(&sls->lock); - sls->abort = true; - pthread_cond_broadcast(&sls->cond); - pthread_mutex_unlock(&sls->lock); _job_complete_handler(sls, msg); slurm_free_srun_job_complete_msg(msg->data); break;