From 677f1d3afd08a590b8c14ceceb7bf85005e1daf4 Mon Sep 17 00:00:00 2001 From: Marius Tolzmann Date: Sun, 7 May 2017 18:30:19 +0200 Subject: [PATCH] mxq_job: allow to set limit for assigning jobs to deamon no logic was changed in this commit renamed mxq_assign_job_from_group_to_daemon() to mxq_assign_jobs_from_group_to_daemon() and added parameter limit --- mxq_job.c | 13 +++++++------ mxq_job.h | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/mxq_job.c b/mxq_job.c index eea849e9..88a1853b 100644 --- a/mxq_job.c +++ b/mxq_job.c @@ -291,7 +291,7 @@ int mxq_load_jobs_in_group_with_status(struct mx_mysql *mysql, struct mxq_job ** return res; } -int mxq_assign_job_from_group_to_daemon(struct mx_mysql *mysql, uint64_t group_id, struct mxq_daemon *daemon, unsigned long slots_per_job) +int mxq_assign_jobs_from_group_to_daemon(struct mx_mysql *mysql, uint64_t group_id, struct mxq_daemon *daemon, unsigned long slots_per_job, uint64_t limit) { struct mx_mysql_bind param = {0}; int res; @@ -323,9 +323,9 @@ int mxq_assign_job_from_group_to_daemon(struct mx_mysql *mysql, uint64_t group_i " ORDER BY" " job_priority," " job_id" - " LIMIT 1"; + " LIMIT ?"; - res = mx_mysql_bind_init_param(¶m, 5); + res = mx_mysql_bind_init_param(¶m, 6); assert(res == 0); idx = 0; @@ -335,6 +335,7 @@ int mxq_assign_job_from_group_to_daemon(struct mx_mysql *mysql, uint64_t group_i res += mx_mysql_bind_var(¶m, idx++, uint64, &slots_per_job); res += mx_mysql_bind_var(¶m, idx++, string, &daemon->daemon_name); res += mx_mysql_bind_var(¶m, idx++, uint64, &group_id); + res += mx_mysql_bind_var(¶m, idx++, uint64, &limit); assert(res == 0); res = mx_mysql_do_statement_noresult(mysql, query, ¶m); @@ -703,13 +704,13 @@ int mxq_load_job_from_group_for_daemon(struct mx_mysql *mysql, struct mxq_job *j break; } - res = mxq_assign_job_from_group_to_daemon(mysql, group_id, daemon, slots_per_job); + res = mxq_assign_jobs_from_group_to_daemon(mysql, group_id, daemon, slots_per_job, 1); if (res < 0) { - mx_log_err(" group_id=%lu :: mxq_assign_job_from_group_to_daemon(): %m", group_id); + mx_log_err(" group_id=%lu :: mxq_assign_jobs_from_group_to_daemon(): %m", group_id); return 0; } if (res == 0) { - mx_log_warning(" group_id=%lu :: mxq_assign_job_from_group_to_daemon(): No matching job found - maybe another server was a bit faster. ;)", group_id); + mx_log_warning(" group_id=%lu :: mxq_assign_jobs_from_group_to_daemon(): No matching job found - maybe another server was a bit faster. ;)", group_id); return 0; } } while (1); diff --git a/mxq_job.h b/mxq_job.h index cca5b561..7392588d 100644 --- a/mxq_job.h +++ b/mxq_job.h @@ -101,7 +101,7 @@ void mxq_job_free_content(struct mxq_job *j); int mxq_load_job(struct mx_mysql *mysql, struct mxq_job **mxq_jobs, uint64_t job_id); int mxq_load_jobs_in_group(struct mx_mysql *mysql, struct mxq_job **mxq_jobs, struct mxq_group *grp); int mxq_load_jobs_in_group_with_status(struct mx_mysql *mysql, struct mxq_job **mxq_jobs, struct mxq_group *grp, uint64_t job_status); -int mxq_assign_job_from_group_to_daemon(struct mx_mysql *mysql, uint64_t group_id, struct mxq_daemon *daemon, unsigned long slots_per_job); +int mxq_assign_jobs_from_group_to_daemon(struct mx_mysql *mysql, uint64_t group_id, struct mxq_daemon *daemon, unsigned long slots_per_job, uint64_t limit); int mxq_unassign_jobs_of_server(struct mx_mysql *mysql, struct mxq_daemon *daemon); int mxq_set_job_status_loaded_on_server(struct mx_mysql *mysql, struct mxq_job *job); int mxq_set_job_status_running(struct mx_mysql *mysql, struct mxq_job *job);