Update su-si assignment flag in case SU restart
from error escalation.
---
 src/amf/amfnd/susm.cc | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/amf/amfnd/susm.cc b/src/amf/amfnd/susm.cc
index 86811f1e4..0d2896e31 100644
--- a/src/amf/amfnd/susm.cc
+++ b/src/amf/amfnd/susm.cc
@@ -489,6 +489,12 @@ static uint32_t assign_si_to_su(const AVND_CB *cb, 
AVND_SU_SI_REC *si,
   LOG_NO("Assigning '%s' %s to '%s'", si->name.c_str(),
          ha_state[si->curr_state], su->name.c_str());
 
+  // In case SU is re-assign after SU restarts
+  if (!m_AVND_SU_IS_ASSIGN_PEND(su) &&
+      m_AVND_SU_IS_RESTART(su) &&
+      (su_all_comps_restartable(*su) == true))
+    m_AVND_SU_ASSIGN_PEND_SET(su);
+
   /* initiate the si assignment for pi su */
   if (m_AVND_SU_IS_PREINSTANTIABLE(su)) {
     uint32_t rank;
@@ -1148,6 +1154,11 @@ uint32_t avnd_su_si_oper_done(AVND_CB *cb, AVND_SU *su, 
AVND_SU_SI_REC *si) {
       if (m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_ASSIGNING(curr_si)) {
         m_AVND_SU_SI_CURR_ASSIGN_STATE_SET(curr_si,
                                            AVND_SU_SI_ASSIGN_STATE_ASSIGNED);
+        // In case SU is re-assign after SU restarts
+        if (m_AVND_SU_IS_ASSIGN_PEND(su) &&
+            m_AVND_SU_IS_RESTART(su) &&
+            (su_all_comps_restartable(*su) == true))
+          m_AVND_SU_ASSIGN_PEND_RESET(su);
         LOG_NO("Assigned '%s' %s to '%s'", curr_si->name.c_str(),
                ha_state[curr_si->curr_state], su->name.c_str());
       } else if (m_AVND_SU_SI_CURR_ASSIGN_STATE_IS_REMOVING(curr_si)) {
-- 
2.17.1



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

Reply via email to