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();