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