From 9164afbb08baedca12f8473950a736a77e21aefc Mon Sep 17 00:00:00 2001 From: Ralph Castain Date: Thu, 11 May 2017 06:50:59 -0700 Subject: [PATCH] When a daemon force-terminates, we don't get the show_help message it was trying to send because the message is at a lower priority than the termination event. Resolve this by putting the oob in its own progress thread. Also, use only that one thread by default - if someone needs more progress threads in the OOB, they can use the MCA param to get them. Signed-off-by: Ralph Castain --- orte/mca/oob/base/oob_base_frame.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/orte/mca/oob/base/oob_base_frame.c b/orte/mca/oob/base/oob_base_frame.c index 56ec2ad8fc..be5c745e50 100644 --- a/orte/mca/oob/base/oob_base_frame.c +++ b/orte/mca/oob/base/oob_base_frame.c @@ -55,11 +55,7 @@ orte_oob_base_t orte_oob_base = {0}; static int orte_oob_base_register(mca_base_register_flag_t flags) { - if (ORTE_PROC_IS_APP || ORTE_PROC_IS_TOOL) { - orte_oob_base.num_threads = 0; - } else { - orte_oob_base.num_threads = 8; - } + orte_oob_base.num_threads = 0; (void)mca_base_var_register("orte", "oob", "base", "num_progress_threads", "Number of independent progress OOB messages for each interface", MCA_BASE_VAR_TYPE_INT, NULL, 0, 0, @@ -95,6 +91,10 @@ static int orte_oob_base_close(void) OBJ_RELEASE(cli); } + if (!ORTE_PROC_IS_APP && !ORTE_PROC_IS_TOOL) { + opal_progress_thread_finalize("OOB-BASE"); + } + /* destruct our internal lists */ OBJ_DESTRUCT(&orte_oob_base.actives); @@ -122,7 +122,11 @@ static int orte_oob_base_open(mca_base_open_flag_t flags) opal_hash_table_init(&orte_oob_base.peers, 128); OBJ_CONSTRUCT(&orte_oob_base.actives, opal_list_t); - orte_oob_base.ev_base = orte_event_base; + if (ORTE_PROC_IS_APP || ORTE_PROC_IS_TOOL) { + orte_oob_base.ev_base = orte_event_base; + } else { + orte_oob_base.ev_base = opal_progress_thread_init("OOB-BASE"); + } #if OPAL_ENABLE_FT_CR == 1