File bsc#1224183-0002-Fix-tools-CIB-clients-retry-signon-upon-an-EAGAIN-er.patch of Package pacemaker.36799

From 843a8e6cc96f137819fb5f4e1d45abce58c05ca3 Mon Sep 17 00:00:00 2001
From: "Gao,Yan" <ygao@suse.com>
Date: Tue, 2 Jul 2024 10:20:24 +0200
Subject: [PATCH 2/2] Fix: tools: CIB clients retry signon upon an EAGAIN error

... up to 5 times.

Previously CIB clients wouldn't retry signon upon an EAGAIN and directly
return a connection error, which made them not resilient enough.
---
 tools/cibadmin.c      | 2 +-
 tools/crm_attribute.c | 2 +-
 tools/crm_node.c      | 2 +-
 tools/crm_resource.c  | 2 +-
 tools/crm_shadow.c    | 2 +-
 tools/crm_ticket.c    | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/tools/cibadmin.c b/tools/cibadmin.c
index bc30ac0556..74a142c9f3 100644
--- a/tools/cibadmin.c
+++ b/tools/cibadmin.c
@@ -948,7 +948,7 @@ do_init(void)
     int rc = pcmk_ok;
 
     the_cib = cib_new();
-    rc = the_cib->cmds->signon(the_cib, crm_system_name, cib_command);
+    rc = cib__signon_attempts(the_cib, crm_system_name, cib_command, 5);
     if (rc != pcmk_ok) {
         crm_err("Could not connect to the CIB: %s", pcmk_strerror(rc));
         fprintf(stderr, "Could not connect to the CIB: %s\n",
diff --git a/tools/crm_attribute.c b/tools/crm_attribute.c
index f9b14344cc..c941afa88b 100644
--- a/tools/crm_attribute.c
+++ b/tools/crm_attribute.c
@@ -818,7 +818,7 @@ main(int argc, char **argv)
     }
 
     the_cib = cib_new();
-    rc = the_cib->cmds->signon(the_cib, crm_system_name, cib_command);
+    rc = cib__signon_attempts(the_cib, crm_system_name, cib_command, 5);
     rc = pcmk_legacy2rc(rc);
 
     if (rc != pcmk_rc_ok) {
diff --git a/tools/crm_node.c b/tools/crm_node.c
index 3a8d2d1b21..d4153605a6 100644
--- a/tools/crm_node.c
+++ b/tools/crm_node.c
@@ -579,7 +579,7 @@ purge_node_from_cib(const char *node_name, long node_id)
     if (cib == NULL) {
         return ENOTCONN;
     }
-    rc = cib->cmds->signon(cib, crm_system_name, cib_command);
+    rc = cib__signon_attempts(cib, crm_system_name, cib_command, 5);
     if (rc == pcmk_ok) {
         rc = cib->cmds->init_transaction(cib);
     }
diff --git a/tools/crm_resource.c b/tools/crm_resource.c
index c592e86a02..ea4f268b9f 100644
--- a/tools/crm_resource.c
+++ b/tools/crm_resource.c
@@ -1708,7 +1708,7 @@ main(int argc, char **argv)
                         _("Could not create CIB connection"));
             goto done;
         }
-        rc = cib_conn->cmds->signon(cib_conn, crm_system_name, cib_command);
+        rc = cib__signon_attempts(cib_conn, crm_system_name, cib_command, 5);
         rc = pcmk_legacy2rc(rc);
         if (rc != pcmk_rc_ok) {
             exit_code = pcmk_rc2exitc(rc);
diff --git a/tools/crm_shadow.c b/tools/crm_shadow.c
index aedf805c90..b7a9918dad 100644
--- a/tools/crm_shadow.c
+++ b/tools/crm_shadow.c
@@ -455,7 +455,7 @@ connect_real_cib(cib_t **real_cib, GError **error)
         return rc;
     }
 
-    rc = (*real_cib)->cmds->signon(*real_cib, crm_system_name, cib_command);
+    rc = cib__signon_attempts(*real_cib, crm_system_name, cib_command, 5);
     rc = pcmk_legacy2rc(rc);
     if (rc != pcmk_rc_ok) {
         exit_code = pcmk_rc2exitc(rc);
diff --git a/tools/crm_ticket.c b/tools/crm_ticket.c
index 2faa74e2a2..bd2bbcf167 100644
--- a/tools/crm_ticket.c
+++ b/tools/crm_ticket.c
@@ -405,7 +405,7 @@ main(int argc, char **argv)
         goto done;
     }
 
-    rc = cib_conn->cmds->signon(cib_conn, crm_system_name, cib_command);
+    rc = cib__signon_attempts(cib_conn, crm_system_name, cib_command, 5);
     rc = pcmk_legacy2rc(rc);
 
     if (rc != pcmk_rc_ok) {
-- 
2.35.3

openSUSE Build Service is sponsored by