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
@@ -941,14 +941,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)))))) {
+               !IsCompQualifiedAssignment(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 */
@@ -1250,19 +1245,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 (!IsCompQualifiedAssignment(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);
@@ -1458,6 +1442,37 @@ uint32_t avnd_comp_csi_reassign(AVND_CB 
 }
 
 /**
+ * Check whether a component is qualified for assignment
+ * @param comp
+ *
+ * @return bool
+ */
+bool IsCompQualifiedAssignment(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)) {
+                       LOG_IN("Ignoring 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("Ignoring 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
@@ -1474,18 +1489,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) && 
!IsCompQualifiedAssignment(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);
-
+bool IsCompQualifiedAssignment(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