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 watch dog kill AMFND.
---
 src/amf/amfnd/clc.cc    | 14 +++++++++++---
 src/amf/amfnd/compdb.cc |  4 ++--
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/amf/amfnd/clc.cc b/src/amf/amfnd/clc.cc
index 0b0d62634..5c59c4c1a 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 &&
+          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..981efda2b 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};
@@ -1768,7 +1768,7 @@ done2:
   immutil_saImmOmFinalize(immOmHandle);
 done1:
   TRACE_LEAVE2("%u", res);
-  return res;
+  return res != 0 && error == SA_AIS_ERR_TRY_AGAIN ? SA_AIS_ERR_TRY_AGAIN : 
res;
 }
 
 /**
-- 
2.40.1



_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to