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

Reply via email to