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

Reply via email to