Amfnd need to exist in node in shutdown state and all
components terminated.
---
 src/amf/amfnd/clc.cc | 40 ++++++++++++++++++++++++++++------------
 1 file changed, 28 insertions(+), 12 deletions(-)

diff --git a/src/amf/amfnd/clc.cc b/src/amf/amfnd/clc.cc
index de57838c9..f78e1a707 100644
--- a/src/amf/amfnd/clc.cc
+++ b/src/amf/amfnd/clc.cc
@@ -80,6 +80,8 @@ uint32_t avnd_comp_clc_st_chng_prc(AVND_CB *, AVND_COMP *, 
SaAmfPresenceStateT,
 
 static uint32_t avnd_instfail_su_failover(AVND_CB *, AVND_SU *, AVND_COMP *);
 
+static void amfnd_clean_before_exit(AVND_CB *);
+
 /***************************************************************************
  ** C O M P O N E N T   C L C   F S M   M A T R I X   D E F I N I T I O N **
  ***************************************************************************/
@@ -297,6 +299,23 @@ static void log_failed_exec(NCS_OS_PROC_EXEC_STATUS_INFO 
*exec_stat,
            comp->clc_info.cmds[exec_cmd - 1].cmd);
 }
 
+/****************************************************************************
+  Name          : amfnd_clean_before_exit
+
+  Description   : Clean database before exit
+
+  Arguments     : cb  - ptr to the AvND control block
+
+  Return Values : None
+
+******************************************************************************/
+void amfnd_clean_before_exit(AVND_CB *cb) {
+  LOG_NO("Shutdown completed, exiting");
+  cb->nodeid_mdsdest_db.deleteAll();
+  cb->hctypedb.deleteAll();
+  daemon_exit();
+}
+
 /****************************************************************************
   Name          : avnd_evt_clc_resp
 
@@ -810,10 +829,7 @@ uint32_t avnd_comp_clc_fsm_run(AVND_CB *cb, AVND_COMP 
*comp,
         avnd_comp_pres_state_set(cb, comp, SA_AMF_PRESENCE_UNINSTANTIATED);
         if (all_comps_terminated()) {
           LOG_NO("Terminated all AMF components");
-          LOG_NO("Shutdown completed, exiting");
-          cb->nodeid_mdsdest_db.deleteAll();
-          cb->hctypedb.deleteAll();
-          daemon_exit();
+          amfnd_clean_before_exit(cb);
         } else {
           TRACE("Do nothing");
           goto done;
@@ -2401,6 +2417,12 @@ uint32_t avnd_comp_clc_terming_termsucc_hdler(AVND_CB 
*cb, AVND_COMP *comp) {
     avnd_comp_curr_info_del(cb, comp);
   }
 
+  if ((cb->term_state == AVND_TERM_STATE_OPENSAF_SHUTDOWN_STARTED) &&
+      all_comps_terminated()) {
+    LOG_NO("Terminated all AMF components");
+    amfnd_clean_before_exit(cb);
+  }
+
   TRACE_LEAVE();
   return rc;
 }
@@ -2520,10 +2542,7 @@ uint32_t avnd_comp_clc_terming_cleansucc_hdler(AVND_CB 
*cb, AVND_COMP *comp) {
     }
     if (all_comps_terminated()) {
       LOG_NO("Terminated all AMF components");
-      LOG_NO("Shutdown completed, exiting");
-      cb->nodeid_mdsdest_db.deleteAll();
-      cb->hctypedb.deleteAll();
-      daemon_exit();
+      amfnd_clean_before_exit(cb);
     }
   }
   /*
@@ -2584,10 +2603,7 @@ uint32_t avnd_comp_clc_terming_cleanfail_hdler(AVND_CB 
*cb, AVND_COMP *comp) {
   if ((cb->term_state == AVND_TERM_STATE_OPENSAF_SHUTDOWN_STARTED) &&
       all_comps_terminated()) {
     LOG_WA("Terminated all AMF components (with failures)");
-    LOG_NO("Shutdown completed, exiting");
-    cb->nodeid_mdsdest_db.deleteAll();
-    cb->hctypedb.deleteAll();
-    daemon_exit();
+    amfnd_clean_before_exit(cb);
   }
 
   TRACE_LEAVE();
-- 
2.17.1



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

Reply via email to