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