Ack.
-----Original Message-----
From: Thien Minh Huynh <[email protected]>
Sent: Wednesday, January 10, 2024 10:19 AM
To: Thang Duc Nguyen <[email protected]>; Dat Tran Quoc Phan
<[email protected]>
Cc: [email protected]; Thien Minh Huynh
<[email protected]>
Subject: [PATCH 1/1] amf: retry if imm unavailable during recovery [#3344]
If a component has changed, AMF will obtain configuration from IMM when
recovering it. If IMM is unavailable and SC absence is enabled, AMF will
immediately fail.
Retrying the cleanup event is the solution.
This is to prevent watchdog kill AMFND.
---
src/amf/amfnd/clc.cc | 14 +++++++++++---
src/amf/amfnd/compdb.cc | 6 +++++-
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/src/amf/amfnd/clc.cc b/src/amf/amfnd/clc.cc index
0b0d62634..3c35a916f 100644
--- a/src/amf/amfnd/clc.cc
+++ b/src/amf/amfnd/clc.cc
@@ -1969,9 +1969,17 @@ uint32_t avnd_comp_clc_xxxing_cleansucc_hdler(AVND_CB
*cb, AVND_COMP *comp) {
"'%s': Cleanup success event in the instantiating/restarting state",
comp->name.c_str());
/* Refresh the component configuration, it may have changed */
- if (!m_AVND_IS_SHUTTING_DOWN(cb) && (avnd_comp_config_reinit(comp) != 0)) {
- rc = NCSCC_RC_FAILURE;
- goto done;
+ if (!m_AVND_IS_SHUTTING_DOWN(cb)) {
+ int res = avnd_comp_config_reinit(comp);
+ if (res != 0) {
+ if ((res == SA_AIS_ERR_TRY_AGAIN || res == SA_AIS_ERR_TIMEOUT) &&
+ avnd_comp_clc_cmd_execute(
+ cb, comp, AVND_COMP_CLC_CMD_TYPE_CLEANUP) != NCSCC_RC_SUCCESS) {
+ TRACE("AVND_COMP_CLC_CMD_TYPE_CLEANUP retry failed");
+ }
+ rc = NCSCC_RC_FAILURE;
+ goto done;
+ }
}
/*
diff --git a/src/amf/amfnd/compdb.cc b/src/amf/amfnd/compdb.cc index
b104d5649..ebe9d1f5b 100644
--- a/src/amf/amfnd/compdb.cc
+++ b/src/amf/amfnd/compdb.cc
@@ -1706,7 +1706,7 @@ int avnd_comp_config_reinit(AVND_COMP *comp) {
const SaImmAttrValuesT_2 **attributes;
SaImmHandleT immOmHandle;
SaVersionT immVersion = {'A', 2, 15};
- SaAisErrorT error;
+ SaAisErrorT error = SA_AIS_OK;
const SaImmAttrNameT attributeNames[] = {
const_cast<SaImmAttrNameT>("SA_IMM_SEARCH_GET_CONFIG_ATTR"),
nullptr};
@@ -1767,6 +1767,10 @@ done3:
done2:
immutil_saImmOmFinalize(immOmHandle);
done1:
+ if (res != 0 &&
+ (error == SA_AIS_ERR_TRY_AGAIN || error == SA_AIS_ERR_TIMEOUT)) {
+ res = error;
+ }
TRACE_LEAVE2("%u", res);
return res;
}
--
2.40.1
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel