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


AMF honor SI dependecy within SU while performing failover of SU. In some cases 
like this issue, it has been
observed that failover depends on the order of SIs in the SU list. Due to this, 
sometimes, AMF performs failover
of dep SI before the sponsor SI. This patch ensures when SI dependency is 
configured within SU, AMF always
honors SI dependency.

diff --git a/osaf/services/saf/amf/amfd/si_dep.cc 
b/osaf/services/saf/amf/amfd/si_dep.cc
--- a/osaf/services/saf/amf/amfd/si_dep.cc
+++ b/osaf/services/saf/amf/amfd/si_dep.cc
@@ -1872,7 +1872,20 @@ bool avd_sidep_is_si_failover_possible(A
                                        failover_possible = true;
                                        if (sisu->fsm == AVD_SU_SI_STATE_MODIFY)
                                                sponsor_in_modify_state = true;
+                                       if ((sisu->su == su) && (sisu->fsm == 
AVD_SU_SI_STATE_ASGND)) {
+                                               sponsor_in_modify_state = true;
+                                               TRACE("Sponsor '%s' active in 
same SU",sisu->si->name.value);
+                                       }
                                        break;
+                               } else if ((sisu->state == SA_AMF_HA_QUIESCED) 
&&
+                                               (sisu->fsm == 
AVD_SU_SI_STATE_ASGND) &&
+                                               (sisu->su == su) && 
!sidep_is_si_active(sisu->si)) {
+                                       /* If sponsor is quiesced in the same 
SU and not active in
+                                          any other SU, it means failover of 
sponsor is still pending.
+                                        */
+                                       sponsor_in_modify_state = true;
+                                       TRACE("Sponsor '%s' quiescd assigned in 
same SU",sisu->si->name.value);
+
                                } else if ((spons_si_node->si->sg_of_si == 
si->sg_of_si) && (sisu->su != su) &&
                                        (!valid_standby)) {
                                        /* Sponsor also belongs to the same SG 

------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to