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;