File bsc#1205861-0002-Fix-Use-effective-OCF-rc-code-to-avoid-increasing-fa.patch of Package pacemaker.34783
From 23246ba3a87b3318dda43c82f8f7fb6b8146d05a Mon Sep 17 00:00:00 2001
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
Date: Thu, 24 Sep 2020 14:05:39 +0200
Subject: [PATCH] Fix: Use effective OCF rc-code to avoid increasing failcount
for DEGRADED statuses
---
daemons/controld/controld_te_events.c | 2 ++
include/crm/common/internal.h | 3 +++
lib/common/agents.c | 21 +++++++++++++++++++++
3 files changed, 26 insertions(+)
diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c
index 431248c88..e812bd144 100644
--- a/daemons/controld/controld_te_events.c
+++ b/daemons/controld/controld_te_events.c
@@ -365,6 +365,8 @@ process_graph_event(xmlNode *event, const char *event_node)
crm_element_value_int(event, XML_LRM_ATTR_RC, &rc);
crm_element_value_int(event, XML_LRM_ATTR_CALLID, &callid);
+ rc = pcmk__effective_rc(rc);
+
if (decode_transition_key(magic, &update_te_uuid, &transition_num,
&action_num, &target_rc) == FALSE) {
// decode_transition_key() already logged the bad key
diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h
index ae49a86ce..f68ce1b5b 100644
--- a/include/crm/common/internal.h
+++ b/include/crm/common/internal.h
@@ -388,4 +388,7 @@ pcmk__lastfailure_name(const char *rsc_id, const char *op, guint interval_ms)
interval_ms);
}
+// internal resource agent functions (from agents.c)
+int pcmk__effective_rc(int rc);
+
#endif /* CRM_COMMON_INTERNAL__H */
diff --git a/lib/common/agents.c b/lib/common/agents.c
index ddac6973d..1ee55acb1 100644
--- a/lib/common/agents.c
+++ b/lib/common/agents.c
@@ -67,6 +67,27 @@ pcmk_get_ra_caps(const char *standard)
return pcmk_ra_cap_none;
}
+int
+pcmk__effective_rc(int rc)
+{
+ int remapped_rc = rc;
+
+ switch (rc) {
+ case PCMK_OCF_DEGRADED:
+ remapped_rc = PCMK_OCF_OK;
+ break;
+
+ case PCMK_OCF_DEGRADED_MASTER:
+ remapped_rc = PCMK_OCF_RUNNING_MASTER;
+ break;
+
+ default:
+ break;
+ }
+
+ return remapped_rc;
+}
+
char *
crm_generate_ra_key(const char *standard, const char *provider,
const char *type)
--
2.35.3