When SC fail-overs, the new AMFD active will send AVSV_D2N_DATA_VERIFY_MSG message event to AMFND. When AMFND processes this event, it also send the protection group (PG) start message to new active AMFD. In case MDS has not updated its tables by this time, then AMFND still send to old active AMFD.
Solution in this case is to force AMFND send to specified AMFD. --- src/amf/amfd/sgproc.cc | 1 + src/amf/amfnd/di.cc | 3 ++- src/amf/amfnd/mds.cc | 14 +++++++------- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/amf/amfd/sgproc.cc b/src/amf/amfd/sgproc.cc index 665a7c2da..96972de18 100644 --- a/src/amf/amfd/sgproc.cc +++ b/src/amf/amfd/sgproc.cc @@ -1263,6 +1263,7 @@ void avd_su_si_assign_evh(AVD_CL_CB *cb, AVD_EVT *evt) { if ((node = avd_node_find_nodeid(node_id)) == nullptr) { LOG_WA("%s: invalid node ID (%x)", __FUNCTION__, node_id); } else { + LOG_WA("Sending node reboot order"); avd_d2n_reboot_snd(node); } goto done; diff --git a/src/amf/amfnd/di.cc b/src/amf/amfnd/di.cc index 01fd1ad14..cc402149e 100644 --- a/src/amf/amfnd/di.cc +++ b/src/amf/amfnd/di.cc @@ -1206,7 +1206,8 @@ uint32_t avnd_di_msg_send(AVND_CB *cb, AVND_MSG *msg) { TRACE("Msg type '%u'", msg->info.avd->msg_type); /* Verify Ack nack msgs are not buffered */ - if (m_AVSV_N2D_MSG_IS_VER_ACK_NACK(msg->info.avd)) { + if (m_AVSV_N2D_MSG_IS_VER_ACK_NACK(msg->info.avd) || + m_AVSV_N2D_MSG_IS_PG_TRACK_ACT(msg->info.avd)) { /*send the response to active AvD (In case MDS has not updated its tables by this time) */ TRACE_1("%s, Active AVD Adest: %" PRIu64, __FUNCTION__, diff --git a/src/amf/amfnd/mds.cc b/src/amf/amfnd/mds.cc index b1fc367a0..e7542d11d 100644 --- a/src/amf/amfnd/mds.cc +++ b/src/amf/amfnd/mds.cc @@ -1580,13 +1580,13 @@ done: Return Values : NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE - Notes : This funtion as of now is only used to send the ACK-NACK msg - to AvD. This funtion is introduced to overcome the problem - of MDS dropping a msg when the role has changed but MDS in - AvND has not updated its tables about the role change. - Due to this problem MDS will try to send the msg to old - active which may not be there in the system and hence the - msg will be dropped. + Notes : This funtion as of now is only used to send the ACK-NACK or + TRACK-ACT msg to AvD. This funtion is introduced to overcome + the problem of MDS dropping a msg when the role has changed + but MDS in AvND has not updated its tables about the role + change. Due to this problem MDS will try to send the msg to + old active which may not be there in the system and hence + the msg will be dropped. With this funtion we are sending msg to the new active AvD directly, without looking for its MDS role as seen by AvND. ******************************************************************************/ -- 2.25.1 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel