Hi Hans, cluster_su_instantiation_done is called with SU as param from avd_su_oper_state_evh and avd_su_oper_state_evh will not come into picture for NPI sus before cluster timer expires. I can add some comment in cluster_su_instantiation_done that su as param is always get called for PI Sus. Is that ok?
Thanks -Nagu -----Original Message----- From: Hans Feldt [mailto:hans.fe...@ericsson.com] Sent: 02 December 2013 20:31 To: Nagendra Kumar; Sirisha Alla; hans.nordeb...@ericsson.com Cc: opensaf-devel@lists.sourceforge.net Subject: Re: [PATCH 1 of 1] amfd: Add oper state criteria for SUs for stopping Cluster Timer[#76] "The readiness state of a non-pre-instantiable service unit is in-service if all of the following conditions are met: * its operational state and the operational state of its containing node is enabled " So what I mean is the logic cannot check presence state since NPI SUs would not be INSTANTIATED but yet ENABLED and IN-SERVICE. So it should check readiness state as that is the base for assignments. If every SU is IN-SERVICE (except those in -FAILED) go ahead and assign. Thanks, Hans On 12/02/2013 03:11 PM, Nagendra Kumar wrote: > Hi Hans, > NPI is not started till given assignment, so I don't understand, why > npi su should be considered or was rather left out in the patch ? Please > elaborate. > > I will change the function name. > > Thanks > -Nagu > -----Original Message----- > From: Hans Feldt [mailto:hans.fe...@ericsson.com] > Sent: 02 December 2013 18:57 > To: Nagendra Kumar; Sirisha Alla; hans.nordeb...@ericsson.com > Cc: opensaf-devel@lists.sourceforge.net > Subject: Re: [PATCH 1 of 1] amfd: Add oper state criteria for SUs for > stopping Cluster Timer[#76] > > Hi, > > It seems (from my testing) that the patch fixes the problem for > pre-instantiable service units. But most likely not for non-pre-instantiable > SUs. > > Your code comment started my thinking that we should really be checking SUs > Readiness State for INSERVICE instead. > > Which means cluster_su_instantiation_done() is an illogical name. > all_sus_inservice() could be a better name? > > Thanks, > Hans > > > On 11/29/2013 12:08 PM, nagendr...@oracle.com wrote: >> osaf/services/saf/amf/amfd/ndfsm.cc | 5 ++--- >> osaf/services/saf/amf/amfd/ndproc.cc | 27 ++++++++------------------- >> osaf/services/saf/amf/amfd/sgproc.cc | 7 +++++++ >> 3 files changed, 17 insertions(+), 22 deletions(-) >> >> >> diff --git a/osaf/services/saf/amf/amfd/ndfsm.cc >> b/osaf/services/saf/amf/amfd/ndfsm.cc >> --- a/osaf/services/saf/amf/amfd/ndfsm.cc >> +++ b/osaf/services/saf/amf/amfd/ndfsm.cc >> @@ -221,9 +221,8 @@ void avd_nd_ncs_su_assigned(AVD_CL_CB *c >> m_AVD_CLINIT_TMR_START(cb); >> } >> >> - /* No application SUs hosted on this node. Check if all SUs are >> instantiated cluster-wide, >> - if so start assignments */ >> - if ((avnd->list_of_su == NULL) && (cb->amf_init_tmr.is_active >> == true) && >> + /* Check if all SUs are in 'in-service' cluster-wide, if so >> start assignments */ >> + if ((cb->amf_init_tmr.is_active == true) && >> (cluster_su_instantiation_done(cb, NULL) == >> true)) { >> avd_stop_tmr(cb, &cb->amf_init_tmr); >> cluster_startup_expiry_event_generate(cb); >> diff --git a/osaf/services/saf/amf/amfd/ndproc.cc >> b/osaf/services/saf/amf/amfd/ndproc.cc >> --- a/osaf/services/saf/amf/amfd/ndproc.cc >> +++ b/osaf/services/saf/amf/amfd/ndproc.cc >> @@ -493,11 +493,9 @@ bool cluster_su_instantiation_done(AVD_C >> goto node_walk; >> >> TRACE("SU '%s', SUPresenceState '%u'", su->name.value, >> su->saAmfSUPresenceState); >> - if ((su->saAmfSUPresenceState == SA_AMF_PRESENCE_INSTANTIATED) || >> - (su->saAmfSUPresenceState == >> - SA_AMF_PRESENCE_INSTANTIATION_FAILED) || >> - (su->saAmfSUPresenceState == >> - SA_AMF_PRESENCE_TERMINATION_FAILED)) { >> + if (((su->saAmfSUOperState == SA_AMF_OPERATIONAL_ENABLED) && >> (su->saAmfSUPresenceState == >> + SA_AMF_PRESENCE_INSTANTIATED)) || >> + (su->saAmfSUOperState == SA_AMF_OPERATIONAL_DISABLED)) { >> } else { >> /* Don't calculate if SU is in transient state.*/ >> goto done; >> @@ -519,11 +517,11 @@ node_walk: >> >> (su_ptr->su_on_node->saAmfNodeAdminState != >> >> SA_AMF_ADMIN_LOCKED_INSTANTIATION) && >> (su_ptr->saAmfSUPreInstantiable >> == true)) { >> - if ((su_ptr->saAmfSUPresenceState == >> SA_AMF_PRESENCE_INSTANTIATED) || >> - >> (su_ptr->saAmfSUPresenceState == >> - >> SA_AMF_PRESENCE_INSTANTIATION_FAILED) || >> - >> (su_ptr->saAmfSUPresenceState == >> - >> SA_AMF_PRESENCE_TERMINATION_FAILED)) { >> + if (((su_ptr->saAmfSUOperState == >> SA_AMF_OPERATIONAL_ENABLED) && >> + >> (su_ptr->saAmfSUPresenceState == >> + >> SA_AMF_PRESENCE_INSTANTIATED)) || >> + >> (su_ptr->saAmfSUOperState == >> + >> SA_AMF_OPERATIONAL_DISABLED)) { >> } else { >> goto done; >> } >> @@ -743,15 +741,6 @@ void avd_data_update_req_evh(AVD_CL_CB * >> /* send response to pending clm >> callback */ >> if (su->su_on_node->clm_pend_inv != 0) >> clm_pend_response(su, >> static_cast<SaAmfPresenceStateT>(l_val)); >> - >> - /* No application SUs hosted on this >> node. Check if all SUs are instantiated >> - cluster-wide, if so start >> assignments */ >> - if ((cb->amf_init_tmr.is_active == >> true) && >> - >> (su->sg_of_su->sg_ncs_spec == false) && >> - >> (cluster_su_instantiation_done(cb, su) == true)) { >> - avd_stop_tmr(cb, >> &cb->amf_init_tmr); >> - >> cluster_startup_expiry_event_generate(cb); >> - } >> } else { >> /* log error that a the value len is >> invalid */ >> LOG_ER("%s:%u: %u", __FILE__, __LINE__, >> n2d_msg->msg_info.n2d_data_req.param_info. >> diff --git a/osaf/services/saf/amf/amfd/sgproc.cc >> b/osaf/services/saf/amf/amfd/sgproc.cc >> --- a/osaf/services/saf/amf/amfd/sgproc.cc >> +++ b/osaf/services/saf/amf/amfd/sgproc.cc >> @@ -411,6 +411,13 @@ void avd_su_oper_state_evh(AVD_CL_CB *cb >> goto done; >> } >> >> + /* Check if all SUs are in 'in-service' cluster-wide, if so start >> assignments */ >> + if ((cb->amf_init_tmr.is_active == true) && >> + (cluster_su_instantiation_done(cb, su) == true)) { >> + avd_stop_tmr(cb, &cb->amf_init_tmr); >> + cluster_startup_expiry_event_generate(cb); >> + } >> + >> /* Verify that the SU operation state is disable and do the processing. >> */ >> if (n2d_msg->msg_info.n2d_opr_state.su_oper_state == >> SA_AMF_OPERATIONAL_DISABLED) { >> /* if the SU is NCS SU, call the node FSM routine to handle the >> failure. >> >> > > ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel