osaf/services/saf/amf/amfd/role.cc | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
ImplementerClear returns SA_AIS_ERR_TIMEOUT because the message
sent from immnd to immd got lost because of node down.
So, Amf need to handle it as try_again.
After Amf does try_again, Imm returns SA_AIS_ERR_BAD_HANDLE.
Amf handles SA_AIS_ERR_BAD_HANDLE and reinitializes its interface with Imm.
In handling SA_AIS_ERR_BAD_HANDLE, Amf sets the implementer in
avd_imm_reinit_bg_thread, so
when Amf proceeds and calls avd_imm_applier_set, Imm returns
SA_AIS_ERR_INVALID_PARAM. Since, it is expected error from Imm,
Amf ignores it.
diff --git a/osaf/services/saf/amf/amfd/role.cc
b/osaf/services/saf/amf/amfd/role.cc
--- a/osaf/services/saf/amf/amfd/role.cc
+++ b/osaf/services/saf/amf/amfd/role.cc
@@ -659,15 +659,17 @@ void avd_mds_qsd_role_evh(AVD_CL_CB *cb,
_exit(EXIT_FAILURE); // should never get here...
}
+try_again:
/* Take mutex here to sync with imm reinit thread.*/
osaf_mutex_lock_ordie(&imm_reinit_mutex);
-
/* Give up IMM OI implementer role */
if ((rc = immutil_saImmOiImplementerClear(cb->immOiHandle)) !=
SA_AIS_OK) {
osaf_mutex_unlock_ordie(&imm_reinit_mutex);
LOG_ER("FAILOVER Active --> Quiesced FAILED, ImplementerClear
failed %u", rc);
if (rc == SA_AIS_ERR_BAD_HANDLE) {
avd_imm_reinit_bg();
+ } else if (rc == SA_AIS_ERR_TIMEOUT) {
+ goto try_again;
} else
osafassert(0);
} else
@@ -685,10 +687,11 @@ void avd_mds_qsd_role_evh(AVD_CL_CB *cb,
LOG_ER("avd_imm_applier_set FAILED, %u", rc);
if (rc == SA_AIS_ERR_BAD_HANDLE) {
avd_imm_reinit_bg();
- } else if (rc == SA_AIS_ERR_EXIST) {
+ } else if ((rc == SA_AIS_ERR_EXIST) || (rc ==
SA_AIS_ERR_INVALID_PARAM)) {
/* This may arise if immutil_saImmOiImplementerClear
failed and amf reinitializes imm interface and
- set applier in avd_imm_reinit_bg_thread.*/
+ set applier in avd_imm_reinit_bg_thread. Imm may
+ return ERR_EXIST or INVALID_PARAM. */
} else
osafassert(0);
} else
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel