Commit ec371ec1 authored by unknown's avatar unknown
Browse files

Merge perch.ndb.mysql.com:/home/jonas/src/50-work

into  perch.ndb.mysql.com:/home/jonas/src/51-work


storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbScanOperation.cpp:
  SCCS merged
parents 9091b411 bd720c4d
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -8529,11 +8529,20 @@ void Dbdih::openingTableErrorLab(Signal* signal, FileRecordPtr filePtr)
  /*    WE FAILED IN OPENING A FILE. IF THE FIRST FILE THEN TRY WITH THE    */
  /*    DUPLICATE FILE, OTHERWISE WE REPORT AN ERROR IN THE SYSTEM RESTART. */
  /* ---------------------------------------------------------------------- */
  ndbrequire(filePtr.i == tabPtr.p->tabFile[0]);
  if (filePtr.i == tabPtr.p->tabFile[0])
  {
    filePtr.i = tabPtr.p->tabFile[1];
    ptrCheckGuard(filePtr, cfileFileSize, fileRecord);
    openFileRw(signal, filePtr);
    filePtr.p->reqStatus = FileRecord::OPENING_TABLE;
  }
  else
  {
    char buf[256];
    BaseString::snprintf(buf, "Error opening DIH schema files for table: %d",
			 tabPtr.i);
    progError(__LINE__, NDBD_EXIT_AFS_NO_SUCH_FILE, buf);
  }
}//Dbdih::openingTableErrorLab()
void Dbdih::readingTableLab(Signal* signal, FileRecordPtr filePtr) 
+1 −3
Original line number Diff line number Diff line
@@ -12789,19 +12789,17 @@ void Dblqh::lastWriteInFileLab(Signal* signal)
void Dblqh::writePageZeroLab(Signal* signal) 
{
  if (false && logPartPtr.p->logPartState == LogPartRecord::FILE_CHANGE_PROBLEM) 
  if (logPartPtr.p->logPartState == LogPartRecord::FILE_CHANGE_PROBLEM) 
  {
    if (logPartPtr.p->firstLogQueue == RNIL) 
    {
      jam();
      logPartPtr.p->logPartState = LogPartRecord::IDLE;
      ndbout_c("resetting logPartState to IDLE");
    } 
    else 
    {
      jam();
      logPartPtr.p->logPartState = LogPartRecord::ACTIVE;
      ndbout_c("resetting logPartState to ACTIVE");
    }
  }
  
+0 −56
Original line number Diff line number Diff line
@@ -1574,62 +1574,6 @@ NdbScanOperation::close_impl(TransporterFacade* tp, bool forceSend,
    return -1;
  }
  
  bool holdLock = false;
  if (theSCAN_TABREQ)
  {
    ScanTabReq * req = CAST_PTR(ScanTabReq, theSCAN_TABREQ->getDataPtrSend());
    holdLock = ScanTabReq::getHoldLockFlag(req->requestInfo);
  }

  /**
   * When using locks, force close of scan directly
   */
  if (holdLock && theError.code == 0 && 
      (m_sent_receivers_count + m_conf_receivers_count + m_api_receivers_count))
  {
    NdbApiSignal tSignal(theNdb->theMyRef);
    tSignal.setSignal(GSN_SCAN_NEXTREQ);
    
    Uint32* theData = tSignal.getDataPtrSend();
    Uint64 transId = theNdbCon->theTransactionId;
    theData[0] = theNdbCon->theTCConPtr;
    theData[1] = 1;
    theData[2] = transId;
    theData[3] = (Uint32) (transId >> 32);

    tSignal.setLength(4);
    int ret = tp->sendSignal(&tSignal, nodeId);
    if (ret)
    {
      setErrorCode(4008);
      return -1;
    }
    
    /**
     * If no receiver is outstanding...
     *   set it to 1 as execCLOSE_SCAN_REP resets it
     */
    m_sent_receivers_count = m_sent_receivers_count ? m_sent_receivers_count : 1;
    
    while(theError.code == 0 && (m_sent_receivers_count + m_conf_receivers_count))
    {
      int return_code = poll_guard->wait_scan(WAITFOR_SCAN_TIMEOUT, nodeId, forceSend);
      switch(return_code){
      case 0:
	break;
      case -1:
	setErrorCode(4008);
      case -2:
	m_api_receivers_count = 0;
	m_conf_receivers_count = 0;
	m_sent_receivers_count = 0;
	theNdbCon->theReleaseOnClose = true;
	return -1;
      }
    }
    return 0;
  }
  
  /**
   * Wait for outstanding
   */