Skip to content

Commit

Permalink
mxq_job: Add mxq_unload_job_from_server
Browse files Browse the repository at this point in the history
  • Loading branch information
donald committed Jan 29, 2020
1 parent b5617c7 commit 41ac436
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
41 changes: 41 additions & 0 deletions mxq_job.c
Original file line number Diff line number Diff line change
Expand Up @@ -801,3 +801,44 @@ int mxq_load_jobs_running_on_server(struct mx_mysql *mysql, struct mxq_job **job

return res;
}

int mxq_unload_job_from_server(struct mx_mysql *mysql, struct mxq_daemon *daemon, uint64_t job_id) {

/* set a job from LOADED back to INQ. This needs to reset what
* mxq_assign_job_from_group_to_daemon() and mxq_set_job_status_loaded_on_server()
* did to the job:
*
* mxq_assign_job_from_group_to_daemon() : daemon_id, host_hostname, host_slots, server_id, job_status
* mxq_set_job_status_loaded_on_server() : host_id, job_status
*
* Only to be used as an error path, if we fail after loading a job during job setup
* before any users code was executed (with possible user-visible side effects)
*/

struct mx_mysql_bind param = {0};
int res;

char *query =
"UPDATE"
" mxq_job"
" SET"
" daemon_id = 0,"
" host_hostname = '',"
" host_slots = 0,"
" server_id = '',"
" host_id = '',"
" job_status = " status_str(MXQ_JOB_STATUS_INQ)
" WHERE"
" job_id = ?"
" AND job_status = " status_str(MXQ_JOB_STATUS_LOADED);

mx_mysql_bind_init_param(&param, 1);
mx_mysql_bind_var(&param, 0, uint64, &(job_id));

res = mx_mysql_do_statement_noresult_retry_on_fail(mysql, query, &param);
if (res < 0) {
mx_log_err("mx_mysql_do_statement(): %m");
return res;
}
return res;
}
1 change: 1 addition & 0 deletions mxq_job.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,5 @@ int mxq_job_set_tmpfilenames(struct mxq_group *g, struct mxq_job *j);
int mxq_load_job_from_group_assigned_to_daemon(struct mx_mysql *mysql, struct mxq_job **jobs_result, uint64_t group_id, struct mxq_daemon *daemon);
int mxq_load_job_from_group_for_daemon(struct mx_mysql *mysql, struct mxq_job *mxqjob, uint64_t group_id, struct mxq_daemon *daemon,unsigned long slots_per_job);
int mxq_load_jobs_running_on_server(struct mx_mysql *mysql, struct mxq_job **jobs_result, struct mxq_daemon *daemon);
int mxq_unload_job_from_server(struct mx_mysql *mysql, struct mxq_daemon *daemon, uint64_t job_id);
#endif

0 comments on commit 41ac436

Please sign in to comment.