From 402b9965896c820f0fa6bdd0c5706b29fe5f1f86 Mon Sep 17 00:00:00 2001 From: Utz-Uwe Haus <uhaus@cray.com> Date: Wed, 18 Nov 2020 15:51:56 +0100 Subject: [PATCH] Fix mstro__pool_event_cdoid_get This function never returned the correct ID --- maestro/ofi.c | 4 ++-- maestro/pool_manager.c | 4 +++- maestro/pool_manager_registry.c | 4 ++++ maestro/subscription_registry.c | 13 ++++++++++++- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/maestro/ofi.c b/maestro/ofi.c index f842cab7..be9651a4 100644 --- a/maestro/ofi.c +++ b/maestro/ofi.c @@ -2390,8 +2390,8 @@ mstro_pm__register_app(Mstro__Pool__Join *join_msg, goto BAILOUT_FREE; } - DEBUG("App %d advertises %zu transport methods\n", - join_msg->transport_methods->n_supported); + DEBUG("App %s advertises %zu transport methods\n", + join_msg->component_name, join_msg->transport_methods->n_supported); /* insert into registry table */ s = mstro_pm_app_register(ep, translated_addr, diff --git a/maestro/pool_manager.c b/maestro/pool_manager.c index d7bf7030..95fff9b6 100644 --- a/maestro/pool_manager.c +++ b/maestro/pool_manager.c @@ -416,8 +416,10 @@ mstro_pm__event_notify_and_continue(Mstro__Pool__Event *pool_event_msg, * the event acks have arrived. If none are needed the event will * be triggered immediately. */ - DEBUG("Advertising event kind %d (%s)\n", + DEBUG("Advertising event kind %d (%s:%s)\n", pool_event_msg->kind, + protobuf_c_enum_descriptor_get_value(&mstro__pool__event_kind__descriptor, + pool_event_msg->kind)->name, beforep ? "before" : "after"); s = mstro_pool_event_advertise(pool_event_msg, beforep, cont_event); diff --git a/maestro/pool_manager_registry.c b/maestro/pool_manager_registry.c index 5623c26e..bda42040 100644 --- a/maestro/pool_manager_registry.c +++ b/maestro/pool_manager_registry.c @@ -1128,6 +1128,10 @@ mstro_pm_cdo_app_match(mstro_app_id origin, const struct mstro_cdo_id *id, return MSTRO_OK; } + /* WITH_CDO_ID_STR(str,id, { */ + /* DEBUG("Trying to match %s origin %" PRIappid " for selector %p, query |%s|\n", */ + /* str, origin, cdo_selector, cdo_selector->query); */ + /* }); */ mstro_status status = MSTRO_FAIL; /* now fetcch attributes from per-app-CDO entry, call subscription-module checker and return result */ WITH_LOCKED_CDO_REGISTRY({ diff --git a/maestro/subscription_registry.c b/maestro/subscription_registry.c index 9e9b7314..7e4f520e 100644 --- a/maestro/subscription_registry.c +++ b/maestro/subscription_registry.c @@ -1403,6 +1403,17 @@ mstro__pool_event_cdoid_get(const Mstro__Pool__Event *ev, ERR("Unexpected event type: %d\n", ev->payload_case); s=MSTRO_INVARG; } + + if(s==MSTRO_OK) { + /* DECLARE may leave uuid NULL */ + if(uuid) { + id->qw[0] = uuid->qw0; + id->qw[1] = uuid->qw1; + } else { + *id = MSTRO_CDO_ID_NULL; + } + } + return s; } @@ -1624,7 +1635,7 @@ mstro_subscription_selector_check(struct mstro_subscription_ *s, return MSTRO_OK; } else { /* we always need the CDO id. Unfortunately it's slightly buried in the EV */ - struct mstro_cdo_id id; + struct mstro_cdo_id id = MSTRO_CDO_ID_INVALID; status = mstro__pool_event_cdoid_get(ev, &id); if(status!=MSTRO_OK) { ERR("Failed to retrieve CDO id from event\n"); -- GitLab