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