Commit a100123a authored by unknown's avatar unknown
Browse files

adopted to corrected ndb SendSignal Node failrep

parent 45433e78
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -765,7 +765,7 @@ MgmtSrvr::sendVersionReq(int v_nodeId, Uint32 &version)
    case GSN_NODE_FAILREP:{
      const NodeFailRep * const rep =
	CAST_CONSTPTR(NodeFailRep, signal->getDataPtr());
      if (rep->failNo == nodeId)
      if (NodeBitmask::get(rep->theNodes,nodeId))
	do_send = 1; // retry with other node
      continue;
    }
@@ -894,14 +894,23 @@ int MgmtSrvr::sendSTOP_REQ(NodeId nodeId,
    case GSN_NODE_FAILREP:{
      const NodeFailRep * const rep =
	CAST_CONSTPTR(NodeFailRep, signal->getDataPtr());
      NodeBitmask failedNodes;
      failedNodes.assign(NodeBitmask::Size, rep->theNodes);
#ifdef VM_TRACE
      ndbout_c("Node %d failed", rep->failNo);
      {
	ndbout << "Failed nodes:";
	for (unsigned i = 0; i < 32*NodeBitmask::Size; i++)
	  if(failedNodes.get(i))
	    ndbout << " " << i;
	ndbout << endl;
      }
#endif
      if (nodes.get(rep->failNo))
      failedNodes.bitAND(nodes);
      if (!failedNodes.isclear())
      {
	nodes.clear(rep->failNo);
	nodes.bitANDC(failedNodes); // clear the failed nodes
	if (singleUserNodeId == 0)
	  stoppedNodes.set(rep->failNo);
	  stoppedNodes.bitOR(failedNodes);
      }
      break;
    }
@@ -1244,7 +1253,7 @@ MgmtSrvr::setEventReportingLevelImpl(int nodeId,
    case GSN_NODE_FAILREP:{
      const NodeFailRep * const rep =
	CAST_CONSTPTR(NodeFailRep, signal->getDataPtr());
      if (rep->failNo == nodeId)
      if (NodeBitmask::get(rep->theNodes,nodeId))
	return SEND_OR_RECEIVE_FAILED;
      break;
    }