immnd going to headless twice when receive event NCSMDS_DOWN, NCSMDS_RED_DOWN in the same time.
The fix is prevent go to headless many time. --- src/imm/immnd/immnd_evt.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/imm/immnd/immnd_evt.c b/src/imm/immnd/immnd_evt.c index 656ec9398..a065971b1 100644 --- a/src/imm/immnd/immnd_evt.c +++ b/src/imm/immnd/immnd_evt.c @@ -12230,6 +12230,7 @@ static uint32_t immnd_evt_proc_mds_evt(IMMND_CB *cb, IMMND_EVT *evt) /*TRACE_ENTER(); */ uint32_t rc = NCSCC_RC_SUCCESS; bool is_headless = false; + bool already_headless = false; IMMSV_MDS_INFO *mdsInfo = &evt->info.mds_info; if ((mdsInfo->change == NCSMDS_DOWN) && @@ -12243,6 +12244,10 @@ static uint32_t immnd_evt_proc_mds_evt(IMMND_CB *cb, IMMND_EVT *evt) /* In multi partitioned clusters rejoin, IMMND may not realize * headless due to see IMMDs from different partitions */ if (mdsInfo->svc_id == NCSMDS_SVC_ID_IMMD) { + if ((cb->immd_node_id == 0) && (cb->other_immd_id == 0)) { + LOG_NO("headless state already enable"); + already_headless = true; + } switch (mdsInfo->change) { case NCSMDS_DOWN: is_headless = true; @@ -12296,7 +12301,7 @@ static uint32_t immnd_evt_proc_mds_evt(IMMND_CB *cb, IMMND_EVT *evt) } } - if (is_headless) { + if (is_headless && !already_headless) { /* Cluster is going down. */ if (cb->mScAbsenceAllowed == 0) { /* Regular (non Hydra) exit on IMMD DOWN. */ -- 2.25.1 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel