From 62854316fbd99da80bd8f63089befc6a2e8fb103 Mon Sep 17 00:00:00 2001 From: Ralph Castain Date: Tue, 14 Jun 2005 20:10:00 +0000 Subject: [PATCH] Fix a bug that caused proxies to duplicate subscriptions. Make sure to regenerate non-blocking receive after processing callbacks for timing reasons. This commit was SVN r6059. --- src/mca/gpr/proxy/gpr_proxy_subscribe.c | 2 ++ .../replica/communications/gpr_replica_recv_proxy_msgs.c | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/mca/gpr/proxy/gpr_proxy_subscribe.c b/src/mca/gpr/proxy/gpr_proxy_subscribe.c index 1b1550574e..5d746b96a1 100644 --- a/src/mca/gpr/proxy/gpr_proxy_subscribe.c +++ b/src/mca/gpr/proxy/gpr_proxy_subscribe.c @@ -91,6 +91,8 @@ orte_gpr_proxy_subscribe(orte_gpr_notify_action_t action, return rc; } + /* done */ + return ORTE_SUCCESS; } cmd = OBJ_NEW(orte_buffer_t); diff --git a/src/mca/gpr/replica/communications/gpr_replica_recv_proxy_msgs.c b/src/mca/gpr/replica/communications/gpr_replica_recv_proxy_msgs.c index 0291eed96a..2c3b8ef4d5 100644 --- a/src/mca/gpr/replica/communications/gpr_replica_recv_proxy_msgs.c +++ b/src/mca/gpr/replica/communications/gpr_replica_recv_proxy_msgs.c @@ -62,16 +62,16 @@ void orte_gpr_replica_recv(int status, orte_process_name_t* sender, ompi_output(0, "gpr replica: msg processing complete - processing callbacks"); } - /* reissue the non-blocking receive before processing callbacks */ - orte_rml.recv_buffer_nb(ORTE_RML_NAME_ANY, ORTE_RML_TAG_GPR, 0, orte_gpr_replica_recv, NULL); - - /* be sure to process callbacks before returning */ + /* be sure to process callbacks */ if (!orte_gpr_replica.processing_callbacks) { if (ORTE_SUCCESS != (rc = orte_gpr_replica_process_callbacks())) { ORTE_ERROR_LOG(rc); } } + /* reissue the non-blocking receive before returning */ + orte_rml.recv_buffer_nb(ORTE_RML_NAME_ANY, ORTE_RML_TAG_GPR, 0, orte_gpr_replica_recv, NULL); + OMPI_THREAD_UNLOCK(&orte_gpr_replica_globals.mutex); return; }