osaf/services/saf/amf/amfnd/susm.cc |  14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)


amfnd crashes when comp instantiation fails as a part of comp restart recovery.
Applicable to a NPI SU only.

Crash occurs because AMFND is trying to respond to AMFD for assignment status.
If a healthy comp faults in stable state of SG with comp-restart or su-restart
recovery and it results in INST_FAILED state of SU, then there will be no 
pending
assignments to AMFD. AMFND must inform to AMFD only when SU enters INST_FAILED 
state
during handling of assignments sent by AMFD.

diff --git a/osaf/services/saf/amf/amfnd/susm.cc 
b/osaf/services/saf/amf/amfnd/susm.cc
--- a/osaf/services/saf/amf/amfnd/susm.cc
+++ b/osaf/services/saf/amf/amfnd/susm.cc
@@ -1818,11 +1818,15 @@ uint32_t avnd_su_pres_st_chng_prc(AVND_C
                if (((SA_AMF_PRESENCE_INSTANTIATING == prv_st) ||
                     (SA_AMF_PRESENCE_INSTANTIATED == prv_st)) && 
(SA_AMF_PRESENCE_INSTANTIATION_FAILED == final_st)) {
                        TRACE("SU Instantiating/Instantiated -> Instantiation 
Failed");
-                       /* si-assignment failed .. inform avd */
-                       TRACE("SI-Assignment failed, Informing AVD");
-                       rc = avnd_di_susi_resp_send(cb, su, si);
-                       if (NCSCC_RC_SUCCESS != rc)
-                               goto done;
+                       /*SU may fail with INST_FAILED state as a part of 
recovery 
+                         like comp-restart and su-restart. Inform AMFD if 
+                         assignments are pending from AMFD.*/
+                       if (m_AVND_SU_IS_ASSIGN_PEND(su)) {
+                               TRACE("SI-Assignment failed, Informing AVD");
+                               rc = avnd_di_susi_resp_send(cb, su, si);
+                               if (NCSCC_RC_SUCCESS != rc)
+                                       goto done;
+                       }
 
                        /* mark su as failed */
                        m_AVND_SU_FAILED_SET(su);

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to