In the event of stop/start standby controller, the node is stopped that
generates the MDS event CLMSV_CLMS_MDS_NODE_EVT. This event is being sent
to main thread with NORMAL priority. When the node is started again, the
other event like CLMSV_CLUSTER_JOIN_REQ is being sent with HIGH priority.

The race happens as CLMSV_CLMS_MDS_NODE_EVT is processed after the event
CLMSV_CLUSTER_JOIN_REQ, possibly caused by the priority.

The patch sets priority of CLMSV_CLMS_MDS_NODE_EVT as high as the others
so that the order of messages processed in main thread should depend on
the timing order of events that occurred.
---
 src/clm/clmd/clms_mds.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/clm/clmd/clms_mds.cc b/src/clm/clmd/clms_mds.cc
index a1f5348..58552cc 100644
--- a/src/clm/clmd/clms_mds.cc
+++ b/src/clm/clmd/clms_mds.cc
@@ -1097,7 +1097,7 @@ static uint32_t clms_mds_node_event(struct 
ncsmds_callback_info *mds_info) {
     clmsv_evt->info.node_mds_info.node_id = mds_info->info.node_evt.node_id;
     clmsv_evt->info.node_mds_info.nodeup = SA_TRUE;
 
-    rc = m_NCS_IPC_SEND(&clms_cb->mbx, clmsv_evt, NCS_IPC_PRIORITY_NORMAL);
+    rc = m_NCS_IPC_SEND(&clms_cb->mbx, clmsv_evt, NCS_IPC_PRIORITY_HIGH);
     if (rc != NCSCC_RC_SUCCESS) {
       TRACE("IPC send failed %d", rc);
       free(clmsv_evt);
-- 
2.7.4


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to