From db70a750f68cbe836908fe9a07055785342160ab Mon Sep 17 00:00:00 2001 From: Danny Auble <da@schedmd.com> Date: Mon, 3 Oct 2011 16:20:50 -0700 Subject: [PATCH] BGQ - Added initial poll to set up hardware state --- src/plugins/select/bluegene/bl_bgq/bridge_status.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/plugins/select/bluegene/bl_bgq/bridge_status.cc b/src/plugins/select/bluegene/bl_bgq/bridge_status.cc index b79fa89e701..24ef24eef41 100644 --- a/src/plugins/select/bluegene/bl_bgq/bridge_status.cc +++ b/src/plugins/select/bluegene/bl_bgq/bridge_status.cc @@ -662,7 +662,7 @@ static void _do_hardware_poll(int level, uint16_t *coords, static void *_poll(void *no_data) { event_handler_t event_hand; - time_t last_ran = 0; + static time_t last_ran = 0; time_t curr_time; while (bridge_status_inited) { @@ -674,7 +674,8 @@ static void *_poll(void *no_data) } //debug("polling taking over, realtime is dead"); curr_time = time(NULL); - _do_block_poll(); + if (blocks_are_created) + _do_block_poll(); /* only do every 30 seconds */ if ((curr_time - 30) >= last_ran) { ComputeHardware::ConstPtr bgqsys = getComputeHardware(); @@ -684,6 +685,10 @@ static void *_poll(void *no_data) } slurm_mutex_unlock(&rt_mutex); + /* This means we are doing outside of the thread so + break */ + if (!blocks_are_created) + break; sleep(1); } return NULL; @@ -704,6 +709,9 @@ extern int bridge_status_init(void) if (!kill_job_list) kill_job_list = bg_status_create_kill_job_list(); + /* get initial state */ + _poll(NULL); + rt_client_ptr = new(bgsched::realtime::Client); slurm_attr_init(&thread_attr); -- GitLab