File 0001-Refactor-crm_resource-make-wait-wait-for-pending-act.patch of Package pacemaker.34780

From d253cdf5d7ec493770d738069a5345af25d333ef Mon Sep 17 00:00:00 2001
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
Date: Thu, 26 Oct 2023 12:58:13 +0200
Subject: [PATCH] Refactor: crm_resource: make --wait wait for pending actions
 in CIB

Fixes T555
---
 tools/crm_resource_runtime.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Index: pacemaker-2.1.2+20211124.ada5c3b36/tools/crm_resource_runtime.c
===================================================================
--- pacemaker-2.1.2+20211124.ada5c3b36.orig/tools/crm_resource_runtime.c
+++ pacemaker-2.1.2+20211124.ada5c3b36/tools/crm_resource_runtime.c
@@ -1615,7 +1615,9 @@ int
 wait_till_stable(pcmk__output_t *out, int timeout_ms, cib_t * cib)
 {
     pe_working_set_t *data_set = NULL;
+    xmlXPathObjectPtr search;
     int rc = pcmk_rc_ok;
+    bool pending_unknown_state_resources;
     int timeout_s = timeout_ms? ((timeout_ms + 999) / 1000) : WAIT_DEFAULT_TIMEOUT_S;
     time_t expire_time = time(NULL) + timeout_s;
     time_t time_diff;
@@ -1628,7 +1630,6 @@ wait_till_stable(pcmk__output_t *out, in
     pe__set_working_set_flags(data_set, pe_flag_no_counts|pe_flag_no_compat);
 
     do {
-
         /* Abort if timeout is reached */
         time_diff = expire_time - time(NULL);
         if (time_diff > 0) {
@@ -1670,7 +1671,11 @@ wait_till_stable(pcmk__output_t *out, in
             }
         }
 
-    } while (actions_are_pending(data_set->actions));
+        search = xpath_search(data_set->input, "/cib/status/node_state/lrm/lrm_resources/lrm_resource/"
+                                                XML_LRM_TAG_RSC_OP "[@" XML_LRM_ATTR_RC "='193']");
+        pending_unknown_state_resources = (numXpathResults(search) > 0);
+        freeXpathObject(search);
+    } while (actions_are_pending(data_set->actions) || pending_unknown_state_resources);
 
     pe_free_working_set(data_set);
     return rc;
openSUSE Build Service is sponsored by