Hi Minh, I am pushing this README_NODEGROUP in amf directory. Any comment, will be updated post FC. Do you agree?
Thanks, Praveen On 29-Aug-16 2:46 PM, praveen malviya wrote: > Hi Minh, > > Following content will go in Readme: > > High Level Implementation Notes for LOCK and SHUTDOWN operation on NG: > =========================================================== > > In 2N model, there are broadly two cases for LOCK and SHUTDOWN operation > on NG: > A) Whole 2N SG is mapped in NG which means all assigned SU are hosted on > the nodes of NG. Or > B) SG is partially mapped in NG i.e either active SU or standby SU is > hosted on one of the nodes of NG. > > Currently 2N model supports SI dep with in SU. So in LOCK and SHUTDOWN > operations quiesced and quiescing HA states, should be given honoring SI > deps respectively. > In case A), AVD_SG_FSM_SG_ADMIN is used in case A) as it honors si dep > while giving quiesced or quiescing assignments. > Case B) becomes the case of either lock of standby Node/SU or active > Node/Su which still needs to be handled honoring SI dep. Here > AVD_SG_FSM_SU_OPER fsm state is used via internal function > su_admin_down() as it handles SI dep. > So in 2N model, AMFD always uses internal FSM functions by calling > them inside the wrapper function ng_admin(). > > Other red models do not support SI deps within SU as of now. So in these > models, AMFD uses AVD_SG_FSM_SG_REALIGN by keeping multiple SUs in > operation list while performing LOCK and SHUTDOWN operation on NG. Once > SI dep is fully supported in these modles, AMFD can use internal SG FSM > state like 2N. > > However there is one case, where AMFD can still use AVD_SG_FSM_SG_ADMIN > state for these red models when whole SG is mapped in NG (all assigned > SUs are hosted on on the nodes of NG). But possibility of such a case > is more in 2N model where only two SUs can be assigned anytime. In other > red models, there can be many assigned SUs so possibility of whole SG is > mapped in NG is very less. So, as of now, in other models > AVD_SG_FSM_SG_REALIGN states is used by keeping multiple SUs in oper > list for this case also. > But when SI deps, is completely supported with in SU in these models, > then AMFD cannot use realign state and it will have to use internal FSM > code as it will be enhanced for that. > > > Thanks, > Praveemn > > > > On 29-Aug-16 12:44 PM, minh chau wrote: >> Hi Praveen, >> >> Yes it's for #1454 and #1608 >> >> Thanks, >> Minh >> >> On 29/08/16 17:08, praveen malviya wrote: >>> Hi Minh, >>> >>> Thanks for reviewing and testing. >>> I guess the ack is for both #1454 and #1608. >>> I will add a note. >>> >>> >>> Thanks, >>> Praveen >>> >>> On 29-Aug-16 12:21 PM, minh chau wrote: >>>> Hi Praveen, >>>> >>>> Ack (normal test only), the abnormal failover is supposed to work in >>>> REALIGN in NpM and Nway I think >>>> Maybe you can add a note in README to revisit the consistency of using >>>> SG FSM for nodegroup in all SGs? >>>> >>>> Thanks, >>>> Minh >>>> >>>> On 24/08/16 19:02, praveen malviya wrote: >>>>> Hi Minh, >>>>> >>>>> Please responses inline with [Praveen] >>>>> >>>>> Thanks, >>>>> Praveen >>>>> >>>>> On 24-Aug-16 2:01 PM, minh chau wrote: >>>>>> Hi Praveen, >>>>>> >>>>>> I have tested the patches in case all SUs of NpM/Nway belong to one >>>>>> nodegroup, it works for me. Will try the case that SUs are partially >>>>>> in/out of nodegroup tomorrow. >>>>>> But please, if you have time, can you try to make NpM's ng_admin under >>>>>> FSM_SG_ADMIN. Addition to my previous comment, and also as you >>>>>> knew, in >>>>>> #1725 it's hard to deduce the states (sg fsm state is one of those) >>>>>> because different SG is using FSM differently in some cases. This >>>>>> inconsistency causes a difficult, instead of applying a generic >>>>>> solution >>>>>> for all SG, then each SG has to be treated different way. I think we >>>>>> could also see this kind of problem in future. >>>>> [Praveen] In 5.1, #1725 is targeting only 2N model.In future when >>>>> #1725 will support other red models (upcoming releases), I would do >>>>> any changes that is required in other red models for NG operations. >>>>> >>>>> >>>>>> Thanks, >>>>>> Minh >>>>>> >>>>>> On 23/08/16 16:58, praveen malviya wrote: >>>>>>> Hi Minh, >>>>>>> >>>>>>> I have attached patches for #1454 and #1608 in the ticket #1454. >>>>>>> Please apply them in order. >>>>>>> >>>>>>> Thanks, >>>>>>> Praveen >>>>>>> >>>>>>> On 23-Aug-16 11:56 AM, minh chau wrote: >>>>>>>> Hi Praveen, >>>>>>>> >>>>>>>> Since AMF longDn has been pushed, can you please attach a longDn >>>>>>>> rebased >>>>>>>> version to ticket (both #1454 + #1608) so we can do some test? >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Minh >>>>>>>> >>>>>>>> On 23/08/16 15:56, praveen malviya wrote: >>>>>>>>> Hi Minh, >>>>>>>>> >>>>>>>>> Thanks for reviewing the patch. >>>>>>>>> Please see inline with [Praveen] >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Praveen >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On 23-Aug-16 5:53 AM, minh chau wrote: >>>>>>>>>> Hi Praveen, >>>>>>>>>> >>>>>>>>>> One comment in line with [Minh] >>>>>>>>>> >>>>>>>>>> Thanks >>>>>>>>>> Minh >>>>>>>>>> >>>>>>>>>> On 20/07/16 18:57, praveen.malv...@oracle.com wrote: >>>>>>>>>>> osaf/services/saf/amf/amfd/include/sg.h | 1 + >>>>>>>>>>> osaf/services/saf/amf/amfd/nodegroup.cc | 4 +- >>>>>>>>>>> osaf/services/saf/amf/amfd/sg_npm_fsm.cc | 62 >>>>>>>>>>> ++++++++++++++++++++++++++++++- >>>>>>>>>>> 3 files changed, 62 insertions(+), 5 deletions(-) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Currently 2N, N-Way Active and NoRed models are supported for >>>>>>>>>>> lock, >>>>>>>>>>> shutdown, >>>>>>>>>>> lock-in and unlock-in admin operations on NGs. >>>>>>>>>>> >>>>>>>>>>> This patch supports NplusM model also. >>>>>>>>>>> >>>>>>>>>>> diff --git a/osaf/services/saf/amf/amfd/include/sg.h >>>>>>>>>>> b/osaf/services/saf/amf/amfd/include/sg.h >>>>>>>>>>> --- a/osaf/services/saf/amf/amfd/include/sg.h >>>>>>>>>>> +++ b/osaf/services/saf/amf/amfd/include/sg.h >>>>>>>>>>> @@ -507,6 +507,7 @@ public: >>>>>>>>>>> uint32_t susi_failed(AVD_CL_CB *cb, AVD_SU *su, >>>>>>>>>>> struct avd_su_si_rel_tag *susi, AVSV_SUSI_ACT act, >>>>>>>>>>> SaAmfHAStateT state); >>>>>>>>>>> void node_fail_si_oper(AVD_CL_CB *cb, AVD_SU *su); >>>>>>>>>>> + void ng_admin(AVD_SU *su, AVD_AMF_NG *ng); >>>>>>>>>>> private: >>>>>>>>>>> uint32_t su_fault_su_oper(AVD_CL_CB *cb, AVD_SU *su); >>>>>>>>>>> diff --git a/osaf/services/saf/amf/amfd/nodegroup.cc >>>>>>>>>>> b/osaf/services/saf/amf/amfd/nodegroup.cc >>>>>>>>>>> --- a/osaf/services/saf/amf/amfd/nodegroup.cc >>>>>>>>>>> +++ b/osaf/services/saf/amf/amfd/nodegroup.cc >>>>>>>>>>> @@ -687,6 +687,7 @@ void avd_ng_admin_state_set(AVD_AMF_NG* >>>>>>>>>>> avd_send_admin_state_chg_ntf(&ng->name, >>>>>>>>>>> (SaAmfNotificationMinorIdT)SA_AMF_NTFID_NG_ADMIN_STATE, >>>>>>>>>>> old_state, ng->saAmfNGAdminState); >>>>>>>>>>> + TRACE_LEAVE(); >>>>>>>>>>> } >>>>>>>>>>> /** >>>>>>>>>>> * @brief Verify if Node is stable for admin operation on >>>>>>>>>>> Nodegroup >>>>>>>>>>> etc. >>>>>>>>>>> @@ -749,8 +750,7 @@ static SaAisErrorT check_red_model_servi >>>>>>>>>>> LOG_NO("service outage for '%s' because of >>>>>>>>>>> shutdown/lock " >>>>>>>>>>> "on '%s'",sg->name.value,ng->name.value); >>>>>>>>>>> - if ((sg->sg_redundancy_model == >>>>>>>>>>> SA_AMF_N_WAY_REDUNDANCY_MODEL) || >>>>>>>>>>> - (sg->sg_redundancy_model == >>>>>>>>>>> SA_AMF_NPM_REDUNDANCY_MODEL)) { >>>>>>>>>>> + if (sg->sg_redundancy_model == >>>>>>>>>>> SA_AMF_N_WAY_REDUNDANCY_MODEL) { >>>>>>>>>>> LOG_NO("Admin op on '%s' hosting SUs of '%s' with >>>>>>>>>>> redundancy '%u' " >>>>>>>>>>> "is not supported",ng->name.value, >>>>>>>>>>> sg->name.value, >>>>>>>>>>> sg->sg_redundancy_model); >>>>>>>>>>> diff --git a/osaf/services/saf/amf/amfd/sg_npm_fsm.cc >>>>>>>>>>> b/osaf/services/saf/amf/amfd/sg_npm_fsm.cc >>>>>>>>>>> --- a/osaf/services/saf/amf/amfd/sg_npm_fsm.cc >>>>>>>>>>> +++ b/osaf/services/saf/amf/amfd/sg_npm_fsm.cc >>>>>>>>>>> @@ -120,16 +120,16 @@ static AVD_SU_SI_REL *avd_sg_npm_su_othr >>>>>>>>>>> if (i_susi->si->list_of_sisu != i_susi) { >>>>>>>>>>> o_susi = i_susi->si->list_of_sisu; >>>>>>>>>>> if (o_susi->fsm != AVD_SU_SI_STATE_UNASGN) >>>>>>>>>>> - return o_susi; >>>>>>>>>>> + break; >>>>>>>>>>> } else if (i_susi->si->list_of_sisu->si_next != >>>>>>>>>>> AVD_SU_SI_REL_NULL) { >>>>>>>>>>> o_susi = i_susi->si->list_of_sisu->si_next; >>>>>>>>>>> if (o_susi->fsm != AVD_SU_SI_STATE_UNASGN) >>>>>>>>>>> - return o_susi; >>>>>>>>>>> + break; >>>>>>>>>>> } >>>>>>>>>>> i_susi = i_susi->su_next; >>>>>>>>>>> } >>>>>>>>>>> - >>>>>>>>>>> + TRACE_LEAVE2("o_susi:'%p'",o_susi); >>>>>>>>>>> return o_susi; >>>>>>>>>>> } >>>>>>>>>>> @@ -4452,6 +4452,62 @@ uint32_t SG_NPM::sg_admin_down(AVD_CL_CB >>>>>>>>>>> return NCSCC_RC_SUCCESS; >>>>>>>>>>> } >>>>>>>>>>> +/* >>>>>>>>>>> + * @brief Handles modification of assignments in SU of >>>>>>>>>>> NpM SG >>>>>>>>>>> + * because of lock or shutdown operation on Node >>>>>>>>>>> group. >>>>>>>>>>> + * If SU does not have any SIs assigned to it, AMF >>>>>>>>>>> will >>>>>>>>>>> try >>>>>>>>>>> + * to instantiate new SUs in the SG. If SU has >>>>>>>>>>> assignments, >>>>>>>>>>> + * then depending upon lock or shutdown operation, >>>>>>>>>>> quiesced >>>>>>>>>>> + * or quiescing state will be sent for active SIs >>>>>>>>>>> in SU. >>>>>>>>>>> + * If SU has only standby assignments then remove the >>>>>>>>>>> assignments. >>>>>>>>>>> + * >>>>>>>>>>> + * @param[in] ptr to SU >>>>>>>>>>> + * @param[in] ptr to nodegroup AVD_AMF_NG. >>>>>>>>>>> + */ >>>>>>>>>>> +void SG_NPM::ng_admin(AVD_SU *su, AVD_AMF_NG *ng) >>>>>>>>>>> +{ >>>>>>>>>>> + SaAmfHAStateT ha_state; >>>>>>>>>>> + >>>>>>>>>>> + TRACE_ENTER2("'%s', sg_fsm_state:%u",su->name.value, >>>>>>>>>>> + su->sg_of_su->sg_fsm_state); >>>>>>>>>>> + >>>>>>>>>>> + if (su->list_of_susi == nullptr) { >>>>>>>>>>> + avd_sg_app_su_inst_func(avd_cb, su->sg_of_su); >>>>>>>>>>> + return; >>>>>>>>>>> + } >>>>>>>>>>> + >>>>>>>>>>> + if (ng->saAmfNGAdminState == SA_AMF_ADMIN_SHUTTING_DOWN) >>>>>>>>>>> + ha_state = SA_AMF_HA_QUIESCING; >>>>>>>>>>> + else >>>>>>>>>>> + ha_state = SA_AMF_HA_QUIESCED; >>>>>>>>>>> + >>>>>>>>>>> + if (su->list_of_susi->state == SA_AMF_HA_ACTIVE) { >>>>>>>>>>> + if (avd_sg_su_si_mod_snd(avd_cb, su, ha_state) == >>>>>>>>>>> NCSCC_RC_FAILURE) { >>>>>>>>>>> + LOG_ER("quiescing/quiesced state transtion failed for >>>>>>>>>>> '%s'",su->name.value); >>>>>>>>>>> + goto done; >>>>>>>>>>> + } >>>>>>>>>>> + } else { >>>>>>>>>>> + if (avd_sg_su_si_del_snd(avd_cb, su) == NCSCC_RC_FAILURE) { >>>>>>>>>>> + LOG_ER("removal of standby assignment failed for >>>>>>>>>>> '%s'",su->name.value); >>>>>>>>>>> + goto done; >>>>>>>>>>> + } >>>>>>>>>>> + } >>>>>>>>>>> + >>>>>>>>>>> + avd_sg_su_oper_list_add(avd_cb, su, false); >>>>>>>>>>> + su->sg_of_su->set_fsm_state(AVD_SG_FSM_SG_REALIGN); >>>>>>>>>> [Minh]: For ng_admin operation, 2N is using fsm >>>>>>>>>> AVD_SG_FSM_SG_ADMIN, the >>>>>>>>>> NoRed, NwayActive are using AVD_SG_FSM_SG_REALIGN. Now the >>>>>>>>>> support for >>>>>>>>>> NpM and Nway are using AVD_SG_FSM_SG_REALIGN also. >>>>>>>>>> Quickly browsing through ng_admin() of NoRed, NwayActive, NpM, >>>>>>>>>> Nway, >>>>>>>>>> they are very similar to the existing of those sg_admin_down(), >>>>>>>>>> respectively. I think the NoRed, Nway, NwayACtive, NpM should be >>>>>>>>>> using >>>>>>>>>> AVD_SG_FSM_SG_ADMIN in the same way as 2N. The reason is the same >>>>>>>>>> admin >>>>>>>>>> operation should be treated in the same SG FSM state/code >>>>>>>>>> between SG >>>>>>>>>> types, and if sg_admin_down() works, we should reuse them. >>>>>>>>> >>>>>>>>> In 2N model, there are only two cases: >>>>>>>>> A) Whole SG is mapped in NG or >>>>>>>>> B) SG is partially mapped in NG. One of the SU is having active or >>>>>>>>> standby assignments in one of the nodes of NG. >>>>>>>>> >>>>>>>>> So in 2N model, AVD_SG_FSM_SG_ADMIN is used in case A) because 2N >>>>>>>>> model supports SI dep within SU. Because of this quiesced/quiescing >>>>>>>>> assignments must be given honoring si dep. AVD_SG_FSM_SG_ADMIN >>>>>>>>> honors >>>>>>>>> that while giving quiesced/quiescing assignments. >>>>>>>>> Case B) becomes the case of either lock of standby Node/su or >>>>>>>>> active >>>>>>>>> node/su which still needs to be handled honoring SI dep in >>>>>>>>> su_admin_down(). >>>>>>>>> >>>>>>>>> Other red models do not support, SI deps within SU. Once it is >>>>>>>>> supported we will have to use internal SG FSM state. But without SI >>>>>>>>> deps, other red models can still use AVD_SG_FSM_SG_ADMIN when >>>>>>>>> whole SG >>>>>>>>> is mapped in NG. But possibility of such a case is more in 2N model >>>>>>>>> where only two SUs can be assigned anytime. In other red models, >>>>>>>>> there >>>>>>>>> can be many assigned SUs so possibility of whole SG is mapped in >>>>>>>>> NG is >>>>>>>>> very less. So in other models AVD_SG_FSM_SG_REALIGN states is >>>>>>>>> used by >>>>>>>>> keeping multiple SUs in oper list because these red models are >>>>>>>>> handling switchover situation in REALIGN state (removal of >>>>>>>>> standby is >>>>>>>>> always handled in realign state). But when SI deps, is completely >>>>>>>>> supported within SU in these models, then we cannot use realign >>>>>>>>> state >>>>>>>>> and we will have to use internal FSM code because internal FSM code >>>>>>>>> will be enhanced for that. >>>>>>>>> In 2N model, switchover is being done honoring SI dep but that >>>>>>>>> is in >>>>>>>>> some bug fix cases. >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Praveen >>>>>>>>>>> + >>>>>>>>>>> + //Increment node counter for tracking status of ng operation. >>>>>>>>>>> + if ((su->any_susi_fsm_in_modify() == true) || >>>>>>>>>>> + (su->any_susi_fsm_in_unasgn() == true)) { >>>>>>>>>>> + su->su_on_node->su_cnt_admin_oper++; >>>>>>>>>>> + TRACE("node:%s, su_cnt_admin_oper:%u", >>>>>>>>>>> su->su_on_node->name.value, >>>>>>>>>>> + su->su_on_node->su_cnt_admin_oper); >>>>>>>>>>> + } >>>>>>>>>>> +done: >>>>>>>>>>> + TRACE_LEAVE(); >>>>>>>>>>> + return; >>>>>>>>>>> +} >>>>>>>>>>> + >>>>>>>>>>> SG_NPM::~SG_NPM() { >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > > ------------------------------------------------------------------------------ > _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensaf-devel > ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel