@@ -324,6 +324,7 @@ void MtmOnNodeDisconnect(int nodeId)
324324// MtmRefreshClusterStatus();
325325}
326326
327+ // XXXX: make that event too
327328void MtmOnNodeConnect (int nodeId )
328329{
329330// if (!BIT_CHECK(SELF_CONNECTIVITY_MASK, nodeId-1))
@@ -451,12 +452,6 @@ MtmRefreshClusterStatus()
451452}
452453}
453454
454- /*
455- * Do not check clique with referee grant, because we can disable ourself.
456- */
457- if (Mtm -> refereeGrant )
458- return ;
459-
460455/*
461456 * Check for clique.
462457 */
@@ -500,6 +495,18 @@ MtmRefreshClusterStatus()
500495
501496Mtm -> clique = newClique ;
502497
498+ /*
499+ * Do not perform any action based on clique with referee grant,
500+ * because we can disable ourself.
501+ * But we also need to maintain actual clique not disable ourselves
502+ * when neighbour node will come back and we erase refereeGrant.
503+ */
504+ if (Mtm -> refereeGrant )
505+ {
506+ MtmUnlock ();
507+ return ;
508+ }
509+
503510for (i = 0 ;i < Mtm -> nAllNodes ;i ++ )
504511{
505512bool old_status = BIT_CHECK (Mtm -> disabledNodeMask ,i );