Skip to content

Commit d515f48

Browse files
author
Ralph Castain
committed
The local PMIx server is notifying its clients of all events, but for some reason I don't recall, the broadcast notification was marked for delivery only to non-default event handlers. This creates a discrepancy between the two behaviors, so don't restrict the broadcast notifications.
Signed-off-by: Ralph Castain <[email protected]>
1 parent c667719 commit d515f48

File tree

4 files changed

+21
-22
lines changed

4 files changed

+21
-22
lines changed

.gitignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,17 @@ opal/mca/pmix/pmix2x/pmix/include/pmix_rename.h
322322
opal/mca/pmix/pmix2x/pmix/include/pmix_version.h
323323
opal/mca/pmix/pmix2x/pmix/src/util/keyval/keyval_lex.c
324324
opal/mca/pmix/pmix2x/pmix/src/util/show_help_lex.c
325+
opal/mca/pmix/pmix2x/pmix/examples/alloc
326+
opal/mca/pmix/pmix2x/pmix/examples/client
327+
opal/mca/pmix/pmix2x/pmix/examples/debugger
328+
opal/mca/pmix/pmix2x/pmix/examples/debuggerd
329+
opal/mca/pmix/pmix2x/pmix/examples/dmodex
330+
opal/mca/pmix/pmix2x/pmix/examples/dynamic
331+
opal/mca/pmix/pmix2x/pmix/examples/fault
332+
opal/mca/pmix/pmix2x/pmix/examples/jctrl
333+
opal/mca/pmix/pmix2x/pmix/examples/pub
334+
opal/mca/pmix/pmix2x/pmix/examples/server
335+
opal/mca/pmix/pmix2x/pmix/examples/tool
325336

326337
opal/tools/opal-checkpoint/opal-checkpoint
327338
opal/tools/opal-checkpoint/opal-checkpoint.1

opal/mca/pmix/pmix2x/pmix/src/event/pmix_event_notification.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -800,8 +800,10 @@ static void _notify_client_event(int sd, short args, void *cbdata)
800800
PMIX_ACQUIRE_OBJECT(cd);
801801

802802
pmix_output_verbose(2, pmix_globals.debug_output,
803-
"pmix_server: _notify_client_event notifying clients of event %s",
804-
PMIx_Error_string(cd->status));
803+
"pmix_server: _notify_client_event notifying clients of event %s range %s type %s",
804+
PMIx_Error_string(cd->status),
805+
PMIx_Data_range_string(cd->range),
806+
cd->nondefault ? "NONDEFAULT" : "OPEN");
805807

806808
/* we cannot know if everyone who wants this notice has had a chance
807809
* to register for it - the notice may be coming too early. So cache

opal/mca/pmix/pmix2x/pmix2x_server_south.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -550,9 +550,9 @@ int pmix2x_server_notify_event(int status,
550550

551551

552552
rc = pmix2x_convert_opalrc(status);
553-
/* the range is irrelevant here as the server is passing
553+
/* the range must be nonlocal so the server will pass
554554
* the event down to its local clients */
555-
rc = PMIx_Notify_event(rc, &op->p, PMIX_RANGE_LOCAL,
555+
rc = PMIx_Notify_event(rc, &op->p, PMIX_RANGE_SESSION,
556556
pinfo, sz, opcbfunc, op);
557557
if (PMIX_SUCCESS != rc) {
558558
OBJ_RELEASE(op);

orte/mca/state/base/state_base_fns.c

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -547,8 +547,8 @@ static void _send_notification(int status,
547547
}
548548

549549
if (OPAL_ERR_PROC_ABORTED == status) {
550-
/* we will pass four opal_value_t's */
551-
rc = 4;
550+
/* we will pass three opal_value_t's */
551+
rc = 3;
552552
if (ORTE_SUCCESS != (rc = opal_dss.pack(buf, &rc, 1, OPAL_INT))) {
553553
ORTE_ERROR_LOG(rc);
554554
OBJ_RELEASE(buf);
@@ -569,8 +569,8 @@ static void _send_notification(int status,
569569
}
570570
OBJ_DESTRUCT(&kv);
571571
} else {
572-
/* we are going to pass three opal_value_t's */
573-
rc = 3;
572+
/* we are going to pass two opal_value_t's */
573+
rc = 2;
574574
if (ORTE_SUCCESS != (rc = opal_dss.pack(buf, &rc, 1, OPAL_INT))) {
575575
ORTE_ERROR_LOG(rc);
576576
OBJ_RELEASE(buf);
@@ -608,20 +608,6 @@ static void _send_notification(int status,
608608
}
609609
OBJ_DESTRUCT(&kv);
610610

611-
/* mark this as intended for non-default event handlers */
612-
OBJ_CONSTRUCT(&kv, opal_value_t);
613-
kv.key = strdup(OPAL_PMIX_EVENT_NON_DEFAULT);
614-
kv.type = OPAL_BOOL;
615-
kv.data.flag = true;
616-
kvptr = &kv;
617-
if (ORTE_SUCCESS != (rc = opal_dss.pack(buf, &kvptr, 1, OPAL_VALUE))) {
618-
ORTE_ERROR_LOG(rc);
619-
OBJ_DESTRUCT(&kv);
620-
OBJ_RELEASE(buf);
621-
return;
622-
}
623-
OBJ_DESTRUCT(&kv);
624-
625611
/* if the targets are a wildcard, then xcast it to everyone */
626612
if (ORTE_VPID_WILDCARD == target->vpid) {
627613
OBJ_CONSTRUCT(&sig, orte_grpcomm_signature_t);

0 commit comments

Comments
 (0)