Hi Praveen,

Ack (Test only).

Thanks,
Quyen

-----Original Message-----
From: [email protected] [mailto:[email protected]] 
Sent: Friday, January 08, 2016 8:27 PM
To: [email protected]; [email protected];
[email protected]; [email protected]
Cc: [email protected]
Subject: [PATCH 2 of 2] amfnd: fix amfnd crash due to inst failure of a
restarting npi comp [#1587]

 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);


------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to