diff --git a/src/plugins/select/bluegene/bg_status.h b/src/plugins/select/bluegene/bg_status.h index 2f7744731c9df313af47cb9312c6852dbadfd037..4e62b188042c088dbc68801c6e8cb9e6be0d262e 100644 --- a/src/plugins/select/bluegene/bg_status.h +++ b/src/plugins/select/bluegene/bg_status.h @@ -47,6 +47,8 @@ extern List bg_status_create_kill_job_list(void); extern void bg_status_process_kill_job_list(List kill_job_list); /* defined in the various bridge_status' */ +extern int bridge_status_init(void); + extern int bridge_block_check_mp_states(char *bg_block_id, bool slurmctld_locked); /* This needs to have block_state_mutex locked before hand. */ diff --git a/src/plugins/select/bluegene/bl/bridge_linker.c b/src/plugins/select/bluegene/bl/bridge_linker.c index 06ac3f73106845618034f9d4b09fc0a8d75f1bcc..eb92ff44b5a6c97055436ed2056d6b95c2e25ec8 100644 --- a/src/plugins/select/bluegene/bl/bridge_linker.c +++ b/src/plugins/select/bluegene/bl/bridge_linker.c @@ -1435,7 +1435,6 @@ extern int bridge_init(char *properties_file) #else fatal("No BG_SERIAL is set, can't run."); #endif - bridge_status_init(); #endif return 1; diff --git a/src/plugins/select/bluegene/bl/bridge_status.h b/src/plugins/select/bluegene/bl/bridge_status.h index f83abd31436a56a5fe11861a2798ee76a2f98c81..5cecc5d01bf894611411bb06423e81a82e30a1cc 100644 --- a/src/plugins/select/bluegene/bl/bridge_status.h +++ b/src/plugins/select/bluegene/bl/bridge_status.h @@ -39,7 +39,6 @@ #ifndef _BRIDGE_STATUS_H_ #define _BRIDGE_STATUS_H_ -extern int bridge_status_init(void); extern int bridge_status_fini(void); #endif diff --git a/src/plugins/select/bluegene/bl_bgq/bridge_linker.cc b/src/plugins/select/bluegene/bl_bgq/bridge_linker.cc index d7f66fc06b9d56afd51f94eb1e52905565386a5f..2c4743fff5b2365eb80970069197974739e0b026 100644 --- a/src/plugins/select/bluegene/bl_bgq/bridge_linker.cc +++ b/src/plugins/select/bluegene/bl_bgq/bridge_linker.cc @@ -380,8 +380,6 @@ extern int bridge_setup_system() _setup_ba_mp(0, coords, getComputeHardware()); #endif - bridge_status_init(); - return SLURM_SUCCESS; } diff --git a/src/plugins/select/bluegene/bl_bgq/bridge_status.cc b/src/plugins/select/bluegene/bl_bgq/bridge_status.cc index 4b1179f002d90ab25007d92e80de47205b611893..8a353a241fc526093e7a10af0da2bc3b962b9890 100644 --- a/src/plugins/select/bluegene/bl_bgq/bridge_status.cc +++ b/src/plugins/select/bluegene/bl_bgq/bridge_status.cc @@ -71,6 +71,8 @@ static bool bridge_status_inited = false; #if defined HAVE_BG_FILES +static bool initial_poll = true; + /* * Handle compute block status changes as a result of a block allocate. */ @@ -687,10 +689,11 @@ 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) + if (initial_poll) break; sleep(1); } + return NULL; } @@ -699,7 +702,7 @@ static void *_poll(void *no_data) extern int bridge_status_init(void) { if (bridge_status_inited) - return SLURM_ERROR; + return SLURM_SUCCESS; bridge_status_inited = true; @@ -711,6 +714,7 @@ extern int bridge_status_init(void) /* get initial state */ _poll(NULL); + initial_poll = false; rt_client_ptr = new(bgsched::realtime::Client); diff --git a/src/plugins/select/bluegene/bl_bgq/bridge_status.h b/src/plugins/select/bluegene/bl_bgq/bridge_status.h index dcc8c5f23e4b156ff3d26cf6a96e2b04e23ef508..326d3c27a5005f2887a7d61c66483b596f77776d 100644 --- a/src/plugins/select/bluegene/bl_bgq/bridge_status.h +++ b/src/plugins/select/bluegene/bl_bgq/bridge_status.h @@ -41,7 +41,6 @@ #include "bridge_helper.h" -extern int bridge_status_init(void); extern int bridge_status_fini(void); #endif diff --git a/src/plugins/select/bluegene/select_bluegene.c b/src/plugins/select/bluegene/select_bluegene.c index 474d8aa6b15c23822e01bc186ef0dd98d29930f3..37b28bb6828fc1263421f045bde21f358cc3ceb6 100644 --- a/src/plugins/select/bluegene/select_bluegene.c +++ b/src/plugins/select/bluegene/select_bluegene.c @@ -1956,6 +1956,9 @@ extern int select_p_select_nodeinfo_free(select_nodeinfo_t *nodeinfo) extern int select_p_select_nodeinfo_set_all(time_t last_query_time) { + if (bg_recover != NOT_FROM_CONTROLLER) + bridge_status_init(); + return select_nodeinfo_set_all(last_query_time); }