From 680f0d9a91d68220141353ca18adb27a518a81f1 Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Mon, 21 Apr 2008 20:59:39 +0000 Subject: [PATCH] reset start_time of pending jobs to zero after will_run logic completes --- src/plugins/sched/wiki2/job_will_run.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/plugins/sched/wiki2/job_will_run.c b/src/plugins/sched/wiki2/job_will_run.c index df95688d267..6cf1cec7d95 100644 --- a/src/plugins/sched/wiki2/job_will_run.c +++ b/src/plugins/sched/wiki2/job_will_run.c @@ -156,6 +156,7 @@ static char * _will_run_test(uint32_t *jobid, time_t *start_time, int i, rc; select_will_run_t *select_will_run = NULL; List select_list; + ListIterator iter; select_list = list_create(_select_list_del); if (select_list == NULL) @@ -178,8 +179,6 @@ static char * _will_run_test(uint32_t *jobid, time_t *start_time, break; } - job_ptr->start_time = start_time[i]; - part_ptr = job_ptr->part_ptr; if (part_ptr == NULL) { *err_code = -700; @@ -260,6 +259,7 @@ static char * _will_run_test(uint32_t *jobid, time_t *start_time, select_will_run->avail_nodes = avail_bitmap; avail_bitmap = NULL; select_will_run->job_ptr = job_ptr; + job_ptr->start_time = start_time[i]; select_will_run->max_nodes = max_nodes; select_will_run->min_nodes = min_nodes; select_will_run->req_nodes = req_nodes; @@ -267,6 +267,13 @@ static char * _will_run_test(uint32_t *jobid, time_t *start_time, } FREE_NULL_BITMAP(avail_bitmap); if (i < job_cnt) { /* error logged above */ + /* Restore pending job start time */ + iter = list_iterator_create(select_list); + if (iter == NULL) + fatal("list_iterator_create: malloc failure"); + while ((select_will_run = list_next(iter))) + select_will_run->job_ptr->start_time = 0; + list_iterator_destroy(iter); list_destroy(select_list); return NULL; } @@ -285,7 +292,6 @@ static char * _will_run_test(uint32_t *jobid, time_t *start_time, if (rc == SLURM_SUCCESS) { char tmp_str[128]; - ListIterator iter; *err_code = 0; uint32_t proc_cnt = 0; @@ -316,6 +322,8 @@ static char * _will_run_test(uint32_t *jobid, time_t *start_time, proc_cnt, (uint32_t) select_will_run-> job_ptr->start_time); + /* Restore pending job start time */ + select_will_run->job_ptr->start_time = 0; xstrcat(reply_msg, tmp_str); hostlist = bitmap2node_name(select_will_run-> avail_nodes); @@ -324,6 +332,13 @@ static char * _will_run_test(uint32_t *jobid, time_t *start_time, } list_iterator_destroy(iter); } else { + /* Restore pending job start times */ + iter = list_iterator_create(select_list); + if (iter == NULL) + fatal("list_iterator_create: malloc failure"); + while ((select_will_run = list_next(iter))) + select_will_run->job_ptr->start_time = 0; + list_iterator_destroy(iter); xstrcat(reply_msg, "Jobs not runable on selected nodes"); error("wiki: jobs not runnable on nodes"); } -- GitLab