Hi, Has anyone had a chance to review this ticket?
Thanks, Minh On 16/12/16 12:46, minh chau wrote: > Hi, > > Please help to review this ticket. > > Thanks, > Minh > > On 03/11/16 14:34, minh chau wrote: >> osaf/services/saf/amf/amfd/cluster.cc | 12 +++++------- >> 1 files changed, 5 insertions(+), 7 deletions(-) >> >> >> In non-headless scenario, if there is a SU becoming OUT-OF-SERVICE >> due to node reboot, the situation should be handled in >> node_fail_su_oper, >> where the assignment of OUT-OF-SERVICE SU will be removed. In other >> words, >> the susi_success_su_oper is not supposed to handle an OUT-OF-SERVICE SU >> but still having assignment. When susi_success_su_oper() is called, SU >> having assignment must be IN-SERVICE. >> >> In scenario of headless recovery, which currently outweights pending >> assignment than absent assignment, that would cause >> susi_success_su_oper() >> encounter an OUT-OF-SERVICE SU but still has assignment (even absent >> assignment though). The result eventually is that AMFD will generate >> unexpected assignment messages. >> >> A solution is that AMFD can revert the order of headless recovery, which >> prioritizes to failover absent assignment first. This change should also >> be working, because it has already been supported in non-headless, where >> a node restarts while assignment on another node is still in progress. >> >> diff --git a/osaf/services/saf/amf/amfd/cluster.cc >> b/osaf/services/saf/amf/amfd/cluster.cc >> --- a/osaf/services/saf/amf/amfd/cluster.cc >> +++ b/osaf/services/saf/amf/amfd/cluster.cc >> @@ -98,13 +98,11 @@ void avd_cluster_tmr_init_evh(AVD_CL_CB >> continue; >> } >> >> - if (i_sg->any_assignment_in_progress() == false) { >> - if (i_sg->any_assignment_absent() == false) { >> - i_sg->set_fsm_state(AVD_SG_FSM_STABLE); >> - } else { >> - // failover with ABSENT SUSI, which had already been >> removed during headless >> - i_sg->failover_absent_assignment(); >> - } >> + if (i_sg->any_assignment_absent()) { >> + // failover with ABSENT SUSI, which had already been >> removed during headless >> + i_sg->failover_absent_assignment(); >> + } else if (i_sg->any_assignment_in_progress() == false) { >> + i_sg->set_fsm_state(AVD_SG_FSM_STABLE); >> } >> >> if (i_sg->sg_fsm_state == AVD_SG_FSM_STABLE) >> >> > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel