Hi Hans,

Thanks for comments, I will resubmit the patch.

/Minh

On 1/9/2016 3:44 AM, Hans Nordebäck wrote:
> 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:
>
>

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to