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