Skip to content

Commit

Permalink
mxqd: Set host_id for job after loading job from database
Browse files Browse the repository at this point in the history
  • Loading branch information
mariux committed Sep 24, 2015
1 parent 8f9edb2 commit 1db2348
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 7 deletions.
17 changes: 12 additions & 5 deletions mxq_job.c
Original file line number Diff line number Diff line change
Expand Up @@ -395,19 +395,21 @@ int mxq_set_job_status_loaded_on_server(struct mx_mysql *mysql, struct mxq_job *
char *query =
"UPDATE mxq_job SET"
" job_status = " status_str(MXQ_JOB_STATUS_LOADED)
", host_id = ?"
" WHERE job_id = ?"
" AND job_status = " status_str(MXQ_JOB_STATUS_ASSIGNED)
" AND host_hostname = ?"
" AND server_id = ?"
" AND host_pid = 0";

res = mx_mysql_bind_init_param(&param, 3);
res = mx_mysql_bind_init_param(&param, 4);
assert(res == 0);

res = 0;
res += mx_mysql_bind_var(&param, 0, uint64, &(job->job_id));
res += mx_mysql_bind_var(&param, 1, string, &(job->host_hostname));
res += mx_mysql_bind_var(&param, 2, string, &(job->server_id));
res += mx_mysql_bind_var(&param, 0, string, &(job->host_id));
res += mx_mysql_bind_var(&param, 1, uint64, &(job->job_id));
res += mx_mysql_bind_var(&param, 2, string, &(job->host_hostname));
res += mx_mysql_bind_var(&param, 3, string, &(job->server_id));
assert(res == 0);

res = mx_mysql_do_statement_noresult_retry_on_fail(mysql, query, &param);
Expand Down Expand Up @@ -666,7 +668,7 @@ int mxq_load_job_assigned_to_server(struct mx_mysql *mysql, struct mxq_job **mxq
return res;
}

int mxq_load_job_from_group_for_server(struct mx_mysql *mysql, struct mxq_job *mxqjob, uint64_t group_id, char *hostname, char *server_id)
int mxq_load_job_from_group_for_server(struct mx_mysql *mysql, struct mxq_job *mxqjob, uint64_t group_id, char *hostname, char *server_id, char *host_id)
{
int res;
struct mxq_job *jobs = NULL;
Expand All @@ -677,6 +679,8 @@ int mxq_load_job_from_group_for_server(struct mx_mysql *mysql, struct mxq_job *m
assert(*hostname);
assert(server_id);
assert(*server_id);
assert(host_id);
assert(*host_id);

do {
res = mxq_load_job_assigned_to_server(mysql, &jobs, hostname, server_id);
Expand All @@ -701,6 +705,9 @@ int mxq_load_job_from_group_for_server(struct mx_mysql *mysql, struct mxq_job *m
}
} while (1);

mx_free_null(mxqjob->host_id);
mxqjob->host_id = mx_strdup_forever(host_id);

res = mxq_set_job_status_loaded_on_server(mysql, mxqjob);
if (res < 0) {
mx_log_err(" group_id=%lu job_id=%lu :: mxq_set_job_status_loaded_on_server(): %m", group_id, mxqjob->job_id);
Expand Down
2 changes: 1 addition & 1 deletion mxq_job.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,6 @@ int mxq_set_job_status_exited(struct mx_mysql *mysql, struct mxq_job *job);
int mxq_set_job_status_unknown_for_server(struct mx_mysql *mysql, char *hostname, char *server_id);
int mxq_job_set_tmpfilenames(struct mxq_group *g, struct mxq_job *j);
int mxq_load_job_assigned_to_server(struct mx_mysql *mysql, struct mxq_job **mxq_jobs, char *hostname, char *server_id);
int mxq_load_job_from_group_for_server(struct mx_mysql *mysql, struct mxq_job *mxqjob, uint64_t group_id, char *hostname, char *server_id);
int mxq_load_job_from_group_for_server(struct mx_mysql *mysql, struct mxq_job *mxqjob, uint64_t group_id, char *hostname, char *server_id, char *host_id);

#endif
2 changes: 1 addition & 1 deletion mxqd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1019,7 +1019,7 @@ unsigned long start_job(struct mxq_group_list *group)

server = group->user->server;

res = mxq_load_job_from_group_for_server(server->mysql, &mxqjob, group->group.group_id, server->hostname, server->server_id);
res = mxq_load_job_from_group_for_server(server->mysql, &mxqjob, group->group.group_id, server->hostname, server->server_id, server->host_id);

if (!res) {
return 0;
Expand Down

0 comments on commit 1db2348

Please sign in to comment.