@@ -102,14 +102,15 @@ MtmCheckState(void)
102102// XXXX: should we restrict major with two nodes setup?
103103|| (nConnected == Mtm -> nAllNodes /2 && MtmMajorNode )/* or half + major node */
104104|| (nConnected == Mtm -> nAllNodes /2 && Mtm -> refereeGrant ) )/* or half + referee */
105- && BIT_CHECK (Mtm -> clique ,MtmNodeId - 1 )/* in clique */
105+ && ( BIT_CHECK (Mtm -> clique ,MtmNodeId - 1 )|| Mtm -> refereeGrant ) /* in clique when non-major */
106106&& !BIT_CHECK (Mtm -> stoppedNodeMask ,MtmNodeId - 1 );/* is not stopped */
107107
108108/* ANY -> MTM_DISABLED */
109109if (!isEnabledState )
110110{
111- BIT_SET (Mtm -> disabledNodeMask ,MtmNodeId - 1 );
111+ // BIT_SET(Mtm->disabledNodeMask, MtmNodeId-1);
112112MtmSetClusterStatus (MTM_DISABLED );
113+ MtmDisableNode (MtmNodeId );
113114return ;
114115}
115116
@@ -311,9 +312,9 @@ void MtmOnNodeDisconnect(int nodeId)
311312 * We should disable it, as clique detector will not necessarily
312313 * do that. For example it will anyway find clique with one node.
313314 */
314- MtmDisableNode (nodeId );
315315
316316MtmLock (LW_EXCLUSIVE );
317+ MtmDisableNode (nodeId );
317318BIT_SET (SELF_CONNECTIVITY_MASK ,nodeId - 1 );
318319BIT_SET (Mtm -> reconnectMask ,nodeId - 1 );
319320Mtm -> nConfigChanges += 1 ;