From 5cabb599fbeaf484befe44e53c23e03cd4e80c72 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Tue, 28 Jan 2020 13:38:52 +0100 Subject: [PATCH] mxqd: Unload job if job setup fails If a job is LOADED and we fail during early job setup, then set the job back to INQ. --- mxqd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mxqd.c b/mxqd.c index 1e827d0f..012fdff1 100644 --- a/mxqd.c +++ b/mxqd.c @@ -1177,7 +1177,6 @@ unsigned long start_job(struct mxq_group_list *glist) mx_log_info(" job=%s(%d):%lu:%lu :: new job loaded.", group->user_name, group->user_uid, group->group_id, job->job_id); - if (group->job_tmpdir_size > 0) { mx_mysql_disconnect(server->mysql); pid = fork(); @@ -1197,10 +1196,12 @@ unsigned long start_job(struct mxq_group_list *glist) mx_mysql_connect_forever(&(server->mysql)); if (pid < 0) { mx_log_err("fork: %m"); + mxq_unload_job_from_server(server->mysql, daemon, job->job_id); return(0); } waitpid(pid, &status, 0); if (status) { + mxq_unload_job_from_server(server->mysql, daemon, job->job_id); return 0; } } @@ -1217,6 +1218,7 @@ unsigned long start_job(struct mxq_group_list *glist) if (pid < 0) { mx_log_err("fork: %m"); cpuset_clear_running(&job->host_cpu_set,&server->cpu_set_available); + mxq_unload_job_from_server(server->mysql, daemon, job->job_id); return 0; } else if (pid == 0) { job->host_pid = getpid();