ack, code review only. Minor comments below/Thanks HansN

On 12/14/2015 01:04 AM, Minh Hon Chau wrote:
>   osaf/services/saf/amf/amfnd/comp.cc             |  71 
> +++++++++++++-----------
>   osaf/services/saf/amf/amfnd/include/avnd_comp.h |   2 +-
>   2 files changed, 40 insertions(+), 33 deletions(-)
>
>
> There's a compound *if* conditions to determine whether a component
> can be assigned/removed for a csi. Duplication of it has been placed
> in some amfnd functions. Also, it's not quite informative since the
> false case is being logged in generic meanings.
>
> The patch makes a separated function to do this valuation, add more
> traces for specific cases
>
> diff --git a/osaf/services/saf/amf/amfnd/comp.cc 
> b/osaf/services/saf/amf/amfnd/comp.cc
> --- a/osaf/services/saf/amf/amfnd/comp.cc
> +++ b/osaf/services/saf/amf/amfnd/comp.cc
> @@ -944,14 +944,9 @@ uint32_t avnd_comp_csi_assign(AVND_CB *c
>       TRACE_ENTER2("comp:'%s'", comp->name.value);
>       LOG_IN("Assigning '%s' %s to '%s'", csiname, 
> ha_state[curr_csi->si->curr_state], comp->name.value);
>   
> -     /* skip assignments to failed / unregistered comp */
> +     /* skip assignments to unqualified comp */
>       if (!m_AVND_SU_IS_RESTART(comp->su) &&
> -         (m_AVND_COMP_IS_FAILED(comp) ||
> -          (m_AVND_COMP_TYPE_IS_PREINSTANTIABLE(comp) &&
> -           ((!m_AVND_COMP_IS_REG(comp) && 
> !m_AVND_COMP_PRES_STATE_IS_ORPHANED (comp)) ||
> -            (!m_AVND_COMP_PRES_STATE_IS_INSTANTIATED(comp) &&
> -             (comp->su->pres == SA_AMF_PRESENCE_INSTANTIATION_FAILED) &&
> -             !m_AVND_COMP_PRES_STATE_IS_ORPHANED (comp)))))) {
> +             !is_comp_qualified_assignment(comp)) {
>               TRACE("Not suRestart context and comp is failed or 
> unregistered");
>               /* dont skip restarting components. wait till restart is 
> complete */
>               if ((comp->pres == SA_AMF_PRESENCE_RESTARTING) && 
> m_AVND_COMP_TYPE_IS_PREINSTANTIABLE(comp)) {  /* mark the csi(s) assigned */
> @@ -1253,19 +1248,8 @@ uint32_t avnd_comp_csi_remove(AVND_CB *c
>       TRACE_ENTER2("comp: '%s' : csi: '%p'", comp->name.value, csi);
>       LOG_IN("Removing '%s' from '%s'", csiname, comp->name.value);
>   
> -     /* skip removal from failed / unregistered comp */
> -     if (m_AVND_COMP_IS_FAILED(comp) || 
> (m_AVND_COMP_TYPE_IS_PREINSTANTIABLE(comp) && ((!m_AVND_COMP_IS_REG(comp)
> -                                                                             
>            &&
> -                                                                             
>            !m_AVND_COMP_PRES_STATE_IS_ORPHANED
> -                                                                             
>            (comp))
> -                                                                             
>           ||
> -                                                                             
>           (!m_AVND_COMP_PRES_STATE_IS_INSTANTIATED
> -                                                                             
>            (comp)
> -                                                                             
>            && (comp->su->pres ==
> -                                                                             
>                SA_AMF_PRESENCE_INSTANTIATION_FAILED)
> -                                                                             
>            &&
> -                                                                             
>            !m_AVND_COMP_PRES_STATE_IS_ORPHANED
> -                                                                             
>            (comp))))) {
> +     /* skip removal from unqualified comp */
> +     if (!is_comp_qualified_assignment(comp)) {
>               if (csi) {
>                       /* after restart we should go ahead with next csi, so 
> mark the curr_csi as assigning */
>                       m_AVND_COMP_CSI_CURR_ASSIGN_STATE_SET(csi, 
> AVND_COMP_CSI_ASSIGN_STATE_REMOVING);
> @@ -1461,6 +1445,37 @@ uint32_t avnd_comp_csi_reassign(AVND_CB
>   }
>   
[HansN] This new function should use google c++ style guide
>   /**
> + * Check whether a component is qualified for assignment
> + * @param comp
> + *
> + * @return bool
> + */
> +bool is_comp_qualified_assignment(const AVND_COMP *comp)
> +{
> +     bool rc = true;
> +     TRACE_ENTER2();
> +     if (m_AVND_COMP_IS_FAILED(comp)) {
> +             LOG_IN("Ignoring Failed comp:'%s', comp_flag %x",
> +                             comp->name.value, comp->flag);
> +             rc = false;
> +     } else if (m_AVND_COMP_TYPE_IS_PREINSTANTIABLE(comp)) {
> +             if (!m_AVND_COMP_IS_REG(comp) && 
> !m_AVND_COMP_PRES_STATE_IS_ORPHANED(comp)) {
[HansN] minor comment, Ignoring is misspelled below
> +                     LOG_IN("Ingoring Unregistered comp:'%s'", 
> comp->name.value);
> +                     rc = false;
> +             } else if (!m_AVND_COMP_PRES_STATE_IS_INSTANTIATED (comp) &&
> +                                     comp->su->pres == 
> SA_AMF_PRESENCE_INSTANTIATION_FAILED &&
> +                                     
> !m_AVND_COMP_PRES_STATE_IS_ORPHANED(comp)) {
> +                     LOG_IN("Ingoring comp with invalid presence state:'%s', 
> comp_flag %x, comp_pres=%u, su_pres=%u",
> +                                     comp->name.value, comp->flag,
> +                                     comp->pres, comp->su->pres);
> +                     rc = false;
> +             }
> +     }
> +     TRACE_LEAVE2("rc:%u", rc);
> +     return rc;
> +}
> +
> +/**
>    * Are all CSIs at the specified rank assigned for this SI?
>    * @param si
>    * @param rank
> @@ -1477,18 +1492,10 @@ static bool all_csis_at_rank_assigned(st
>                       csi = 
> (AVND_COMP_CSI_REC*)m_NCS_DBLIST_FIND_NEXT(&csi->si_dll_node)) {
>   
>               if ((csi->rank == rank) && (csi->curr_assign_state != 
> AVND_COMP_CSI_ASSIGN_STATE_ASSIGNED)) {
> -                     /* Ignore the case of failed component/unregistered 
> comp. */
> -                     if (!m_AVND_SU_IS_RESTART(csi->comp->su) && 
> (m_AVND_COMP_IS_FAILED(csi->comp) ||
> -                                             
> (m_AVND_COMP_TYPE_IS_PREINSTANTIABLE(csi->comp) &&
> -                                              
> ((!m_AVND_COMP_IS_REG(csi->comp) &&
> -                                                
> !m_AVND_COMP_PRES_STATE_IS_ORPHANED (csi->comp)) ||
> -                                               
> (!m_AVND_COMP_PRES_STATE_IS_INSTANTIATED (csi->comp) &&
> -                                                (csi->comp->su->pres == 
> SA_AMF_PRESENCE_INSTANTIATION_FAILED) &&
> -                                                
> !m_AVND_COMP_PRES_STATE_IS_ORPHANED
> -                                                (csi->comp)))))) {
> -
> -                     LOG_IN("Ignoring Failed/Unreg Comp'%s' comp pres 
> state=%u, comp flag %x, su pres state %u",
> -                             csi->comp->name.value, csi->comp->pres, 
> csi->comp->flag, csi->comp->su->pres);
> +                     /* Ignore unqualified comp. */
> +                     if (!m_AVND_SU_IS_RESTART(csi->comp->su) && 
> !is_comp_qualified_assignment(csi->comp)) {
> +                             LOG_IN("Ignoring comp'%s' which is not 
> qualified for assignment",
> +                                     csi->comp->name.value);
>                       } else if 
> (m_AVND_COMP_TYPE_IS_PREINSTANTIABLE(csi->comp) &&
>                                       csi->suspending_assignment) {
>                               LOG_IN("Ignoring quiescing/quiesced assignment 
> on unassigned comp'%s'",
> diff --git a/osaf/services/saf/amf/amfnd/include/avnd_comp.h 
> b/osaf/services/saf/amf/amfnd/include/avnd_comp.h
> --- a/osaf/services/saf/amf/amfnd/include/avnd_comp.h
> +++ b/osaf/services/saf/amf/amfnd/include/avnd_comp.h
> @@ -920,7 +920,7 @@ extern int avnd_comp_config_reinit(AVND_
>   extern void avnd_comp_delete(AVND_COMP *comp);
>   extern void avnd_comp_pres_state_set(AVND_COMP *comp, SaAmfPresenceStateT 
> newstate);
>   bool comp_has_quiesced_assignment(const AVND_COMP *comp);
> -
[HansN] use const qualifier for function below
> +bool is_comp_qualified_assignment(const AVND_COMP *comp);
>   /**
>    * Initiate restart of a component.
>    * This means either:


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to