osaf/services/saf/avsv/avnd/avnd_clc.c |  37 +++++++++++++++++++++++++++++++++-
 1 files changed, 36 insertions(+), 1 deletions(-)


If a component crashes or exits in restarting state then AMF should clean up 
the component.
Also if cleanup is successful, component should be instantiated. This patch 
will help in handling
component restart event in the restarting state of the component.

diff --git a/osaf/services/saf/avsv/avnd/avnd_clc.c 
b/osaf/services/saf/avsv/avnd/avnd_clc.c
--- a/osaf/services/saf/avsv/avnd/avnd_clc.c
+++ b/osaf/services/saf/avsv/avnd/avnd_clc.c
@@ -63,6 +63,7 @@ static uint32_t avnd_comp_clc_restart_te
 static uint32_t avnd_comp_clc_restart_termfail_hdler(AVND_CB *, AVND_COMP *);
 static uint32_t avnd_comp_clc_restart_clean_hdler(AVND_CB *, AVND_COMP *);
 static uint32_t avnd_comp_clc_restart_cleanfail_hdler(AVND_CB *, AVND_COMP *);
+static uint32_t avnd_comp_clc_restart_restart_hdler(AVND_CB *cb, AVND_COMP 
*comp);
 static uint32_t avnd_comp_clc_orph_instsucc_hdler(AVND_CB *, AVND_COMP *);
 static uint32_t avnd_comp_clc_orph_term_hdler(AVND_CB *, AVND_COMP *);
 static uint32_t avnd_comp_clc_orph_clean_hdler(AVND_CB *, AVND_COMP *);
@@ -150,7 +151,7 @@ static AVND_COMP_CLC_FSM_FN avnd_comp_cl
         avnd_comp_clc_restart_clean_hdler,     /* CLEANUP EV */
         avnd_comp_clc_xxxing_cleansucc_hdler,  /* CLEANUP_SUCC EV */
         avnd_comp_clc_restart_cleanfail_hdler, /* CLEANUP_FAIL EV */
-        0,                     /* RESTART EV */
+        avnd_comp_clc_restart_restart_hdler,                   /* RESTART EV */
         0,                     /* ORPH EV */
         },
 
@@ -2835,3 +2836,37 @@ uint32_t avnd_instfail_su_failover(AVND_
        return rc;
 }
 
+
+/**
+ * @brief      This function processes component restart event in RESTARTING 
state.
+ *
+ * @param      ptr to avnd_cb 
+ * @param      ptr to component
+ * 
+ * @return     NCSCC_RC_FAILURE/NCSCC_RC_SUCCESS
+ */
+static uint32_t avnd_comp_clc_restart_restart_hdler(AVND_CB *cb, AVND_COMP 
*comp)
+{
+        uint32_t rc = NCSCC_RC_SUCCESS;
+        TRACE_ENTER2("'%s': Restart event in the restarting state", 
comp->name.value);
+
+        if (m_AVND_COMP_TYPE_IS_PROXIED(comp))
+                avnd_comp_cbq_del(cb, comp, true);
+
+        if (m_AVND_COMP_TYPE_IS_PROXIED(comp) && comp->pxy_comp != 0)
+                rc = avnd_comp_cbk_send(cb, comp, AVSV_AMF_PXIED_COMP_CLEAN, 
0, 0);
+        else
+                rc = avnd_comp_clc_cmd_execute(cb, comp, 
AVND_COMP_CLC_CMD_TYPE_CLEANUP);
+
+        if (NCSCC_RC_SUCCESS == rc) {
+                if (!m_AVND_COMP_TYPE_IS_PROXIED(comp))
+                        m_AVND_COMP_REG_PARAM_RESET(cb, comp);
+                m_AVND_COMP_CLC_INST_PARAM_RESET(comp);
+
+                m_AVND_SEND_CKPT_UPDT_ASYNC_UPDT(cb, comp, 
AVND_CKPT_COMP_CONFIG);
+        }
+
+        TRACE_LEAVE();
+        return rc;
+}
+

------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead. 
Download for free and get started troubleshooting in minutes. 
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to