osaf/services/saf/amf/amfd/su.cc |  14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)


In the reported problem when component enters into TERM_FAILED state
during clean up failure, AMFD raises alarm and clears it immediately.
In the reported problem saAmfNodeFailfastOnTerminationFailure is set false.

When component enters term_failed state AMFD raises alrams on it.
When all components are cleaned up, amfnd sends a su-failover request to amfd.
As a part of sufailover request amfd marks all the comps uninstantiated and
clears any pending alrams on them. Since saAmfNodeFailfastOnTerminationFailure 
is false,
clearence of alarm should be done as a part of repair operation on SU.
Even in the case when saAmfNodeFailfastOnTerminationFailure=1, Alarm should be 
cleared
only when AMFD has detected that node has gone for reboot.

Patch fixes both the problems.

diff --git a/osaf/services/saf/amf/amfd/su.cc b/osaf/services/saf/amf/amfd/su.cc
--- a/osaf/services/saf/amf/amfd/su.cc
+++ b/osaf/services/saf/amf/amfd/su.cc
@@ -2103,7 +2103,19 @@ void AVD_SU::disable_comps(SaAisErrorT r
                comp->curr_num_csi_actv = 0;
                comp->curr_num_csi_stdby = 0;
                avd_comp_oper_state_set(comp, SA_AMF_OPERATIONAL_DISABLED);
-               avd_comp_pres_state_set(comp, SA_AMF_PRESENCE_UNINSTANTIATED);
+               if (comp->saAmfCompPresenceState != 
SA_AMF_PRESENCE_TERMINATION_FAILED)
+                       avd_comp_pres_state_set(comp, 
SA_AMF_PRESENCE_UNINSTANTIATED);
+
+               /*
+                  Mark a term_failed component uninstantiated when node is 
rebooted.
+                  When node goes for reboot then AMFD marks node absent. If 
node does
+                  not go for reboot then term_fail state of comp will be 
cleared 
+                  as part of admin repair operation.
+                */
+               if ((comp->saAmfCompPresenceState == 
SA_AMF_PRESENCE_TERMINATION_FAILED) &&
+                               (su_on_node->node_state == 
AVD_AVND_STATE_ABSENT)) {
+                               avd_comp_pres_state_set(comp, 
SA_AMF_PRESENCE_UNINSTANTIATED);
+               }
                comp->saAmfCompRestartCount = 0;
                comp_complete_admin_op(comp, result);
                m_AVSV_SEND_CKPT_UPDT_ASYNC_UPDT(avd_cb, comp, 
AVSV_CKPT_AVD_COMP_CONFIG);

------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to