From b329b7a64ce0875e10669cf3eb0720c79cc95421 Mon Sep 17 00:00:00 2001 From: Marius Tolzmann Date: Sun, 7 May 2017 18:55:24 +0200 Subject: [PATCH] mxqd: always assign jobs_max jobs form group to daemon if no jobs are assigned relates to issue #51 --- mxq_job.c | 5 +++-- mxq_job.h | 2 +- mxqd.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/mxq_job.c b/mxq_job.c index 88a1853b..25d6338f 100644 --- a/mxq_job.c +++ b/mxq_job.c @@ -682,7 +682,7 @@ int mxq_load_job_from_group_assigned_to_daemon(struct mx_mysql *mysql, struct mx } int mxq_load_job_from_group_for_daemon(struct mx_mysql *mysql, struct mxq_job *job, uint64_t group_id, struct mxq_daemon *daemon, - unsigned long slots_per_job) + unsigned long slots_per_job, uint64_t jobs_max) { int res; struct mxq_job *jobs_tmp = NULL; @@ -690,6 +690,7 @@ int mxq_load_job_from_group_for_daemon(struct mx_mysql *mysql, struct mxq_job *j assert(mysql); assert(job); assert(daemon); + assert(jobs_max); do { res = mxq_load_job_from_group_assigned_to_daemon(mysql, &jobs_tmp, group_id, daemon); @@ -704,7 +705,7 @@ int mxq_load_job_from_group_for_daemon(struct mx_mysql *mysql, struct mxq_job *j break; } - res = mxq_assign_jobs_from_group_to_daemon(mysql, group_id, daemon, slots_per_job, 1); + res = mxq_assign_jobs_from_group_to_daemon(mysql, group_id, daemon, slots_per_job, jobs_max); if (res < 0) { mx_log_err(" group_id=%lu :: mxq_assign_jobs_from_group_to_daemon(): %m", group_id); return 0; diff --git a/mxq_job.h b/mxq_job.h index 7392588d..6c05577f 100644 --- a/mxq_job.h +++ b/mxq_job.h @@ -109,6 +109,6 @@ int mxq_set_job_status_exited(struct mx_mysql *mysql, struct mxq_job *job); int mxq_set_job_status_unknown(struct mx_mysql *mysql, struct mxq_job *job); 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_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, uint64_t jobs_max); int mxq_load_jobs_running_on_server(struct mx_mysql *mysql, struct mxq_job **jobs_result, struct mxq_daemon *daemon); #endif diff --git a/mxqd.c b/mxqd.c index 315df8db..3c5e5e17 100644 --- a/mxqd.c +++ b/mxqd.c @@ -1174,7 +1174,7 @@ unsigned long start_job(struct mxq_group_list *glist) group = &glist->group; job = &_mxqjob; - res = mxq_load_job_from_group_for_daemon(server->mysql, job, group->group_id, daemon, glist->slots_per_job); + res = mxq_load_job_from_group_for_daemon(server->mysql, job, group->group_id, daemon, glist->slots_per_job, glist->jobs_max); if (!res) { return 0; }