Hi Son, ACK from me.
Best regards, Hieu -----Original Message----- From: Son Ngoc Tran <son.n.t...@dektech.com.au> Sent: Monday, November 28, 2022 11:25 AM To: Thang Duc Nguyen <thang.d.ngu...@dektech.com.au>; Minh Hon Chau <minh.c...@dektech.com.au>; Hieu Hong Hoang <hieu.h.ho...@dektech.com.au>; Thien Minh Huynh <thien.m.hu...@dektech.com.au> Cc: opensaf-devel@lists.sourceforge.net; Son Ngoc Tran <son.n.t...@dektech.com.au> Subject: [PATCH 1/1] imm: Update active SC information after reconnecting [#3323] Active SC and PL lost connect suddenly,PL will reconnect with active SC. If the active SC is same as previous active SC,PL won't update active SC's information conduce to PL sync failed. Solution is update active SC information for PL in this case. --- src/clm/clmnd/main.cc | 7 +++++++ src/imm/immnd/immnd_mds.c | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/clm/clmnd/main.cc b/src/clm/clmnd/main.cc index 858f1163a..70a379a82 100644 --- a/src/clm/clmnd/main.cc +++ b/src/clm/clmnd/main.cc @@ -62,6 +62,7 @@ static NCS_SEL_OBJ usr1_sel_obj; static CLMNA_CB _clmna_cb; CLMNA_CB *clmna_cb = &_clmna_cb; +static NODE_ID active_sc_node_id = 0; /*msg format version for CLMNA subpart version 1 */ static MDS_CLIENT_MSG_FORMAT_VER @@ -292,9 +293,15 @@ static uint32_t clmna_mds_svc_evt(struct ncsmds_callback_info *mds_cb_info) { TRACE("svc_id %d", mds_cb_info->info.svc_evt.i_svc_id); switch (mds_cb_info->info.svc_evt.i_change) { case NCSMDS_NEW_ACTIVE: + /*If the active node lost connect and reconnect after that, + we will need to update active node information*/ + if (active_sc_node_id == mds_cb_info->info.svc_evt.i_node_id) { + clmna_cb->server_synced = SA_FALSE; + } case NCSMDS_UP: switch (mds_cb_info->info.svc_evt.i_svc_id) { case NCSMDS_SVC_ID_CLMS: + active_sc_node_id = mds_cb_info->info.svc_evt.i_node_id; clmna_cb->clms_mds_dest = mds_cb_info->info.svc_evt.i_dest; TRACE("subpart version: %u", mds_cb_info->info.svc_evt.i_rem_svc_pvt_ver); diff --git a/src/imm/immnd/immnd_mds.c b/src/imm/immnd/immnd_mds.c index 97bb807b9..047fded29 100644 --- a/src/imm/immnd/immnd_mds.c +++ b/src/imm/immnd/immnd_mds.c @@ -26,6 +26,7 @@ #include "immnd.h" #include "base/ncs_util.h" +static NODE_ID active_sc_immd_node_id = 0; uint32_t immnd_mds_callback(struct ncsmds_callback_info *info); static uint32_t immnd_mds_enc(IMMND_CB *cb, MDS_CALLBACK_ENC_INFO *info); @@ -610,6 +611,7 @@ static uint32_t immnd_mds_svc_evt(IMMND_CB *cb, cb->is_immd_up = true; cb->immd_mdest_id = svc_evt->i_dest; cb->immd_node_id = svc_evt->i_node_id; + active_sc_immd_node_id = cb->immd_node_id; break; case NCSMDS_NO_ACTIVE: @@ -638,6 +640,11 @@ static uint32_t immnd_mds_svc_evt(IMMND_CB *cb, cb->immd_mdest_id = svc_evt->i_dest; cb->immd_node_id = svc_evt->i_node_id; } + /*If the active node lost connect and reconnect after that, + we will need to update IMMD information */ + else if(active_sc_immd_node_id == svc_evt->i_node_id) { + cb->immd_node_id = svc_evt->i_node_id; + } break; case NCSMDS_RED_UP: -- 2.17.1 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel