Commit e3ac81be authored by unknown's avatar unknown
Browse files

scan should not send fragmented signal

    use new sendSignal method instead
    new send signal method which sends segments
    remove unused method sendFragmentedSignalUnCond


ndb/src/ndbapi/NdbScanOperation.cpp:
  scan should not send fragmented signal
  use new sendSignal method instead
ndb/src/ndbapi/TransporterFacade.cpp:
  new send signal method which sends segments
ndb/src/ndbapi/TransporterFacade.hpp:
  new send signal method which sends segments
  remove unused method sendFragmentedSignalUnCond
parent 51ad907d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -612,7 +612,7 @@ NdbScanOperation::send_next_scan(Uint32 cnt, bool stopScanFlag){
      LinearSectionPtr ptr[3];
      ptr[0].p = prep_array;
      ptr[0].sz = cnt;
      ret = tp->sendFragmentedSignal(&tSignal, nodeId, ptr, 1);
      ret = tp->sendSignal(&tSignal, nodeId, ptr, 1);
    } else {
      tSignal.setLength(4+cnt);
      ret = tp->sendSignal(&tSignal, nodeId);
@@ -803,7 +803,7 @@ NdbScanOperation::doSendScan(int aProcessorId)
  LinearSectionPtr ptr[3];
  ptr[0].p = m_prepared_receivers;
  ptr[0].sz = theParallelism;
  if (tp->sendFragmentedSignal(tSignal, aProcessorId, ptr, 1) == -1) {
  if (tp->sendSignal(tSignal, aProcessorId, ptr, 1) == -1) {
    setErrorCode(4002);
    return -1;
  } 
+32 −0
Original line number Diff line number Diff line
@@ -955,6 +955,38 @@ TransporterFacade::sendFragmentedSignal(NdbApiSignal* aSignal, NodeId aNode,
  return ret;
}

int
TransporterFacade::sendSignal(NdbApiSignal* aSignal, NodeId aNode, 
			      LinearSectionPtr ptr[3], Uint32 secs){
  aSignal->m_noOfSections = secs;
  if(getIsNodeSendable(aNode) == true){
#ifdef API_TRACE
    if(setSignalLog() && TRACE_GSN(aSignal->theVerId_signalNumber)){
      Uint32 tmp = aSignal->theSendersBlockRef;
      aSignal->theSendersBlockRef = numberToRef(tmp, theOwnId);
      signalLogger.sendSignal(* aSignal,
			      1,
			      aSignal->getDataPtrSend(),
			      aNode,
                              ptr, secs);
      signalLogger.flushSignalLog();
      aSignal->theSendersBlockRef = tmp;
    }
#endif
    SendStatus ss = theTransporterRegistry->prepareSend
      (aSignal, 
       1, // JBB
       aSignal->getDataPtrSend(),
       aNode, 
       ptr);
    assert(ss != SEND_MESSAGE_TOO_BIG);
    aSignal->m_noOfSections = 0;
    return (ss == SEND_OK ? 0 : -1);
  }
  aSignal->m_noOfSections = 0;
  return -1;
}

/******************************************************************************
 * CONNECTION METHODS  Etc
 ******************************************************************************/
+2 −5
Original line number Diff line number Diff line
@@ -69,14 +69,11 @@ public:

  // Only sends to nodes which are alive
  int sendSignal(NdbApiSignal * signal, NodeId nodeId);
  int sendFragmentedSignal(NdbApiSignal*, NodeId, 
  int sendSignal(NdbApiSignal*, NodeId, 
		 LinearSectionPtr ptr[3], Uint32 secs);

  //Dirrrrty
  int sendFragmentedSignalUnCond(NdbApiSignal*, NodeId, 
  int sendFragmentedSignal(NdbApiSignal*, NodeId, 
			   LinearSectionPtr ptr[3], Uint32 secs);

  
  // Is node available for running transactions
  bool   get_node_alive(NodeId nodeId) const;
  bool   get_node_stopping(NodeId nodeId) const;