mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 03:21:53 +01:00
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
This commit is contained in:
commit
ec371ec199
3 changed files with 15 additions and 64 deletions
|
@ -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]);
|
||||
filePtr.i = tabPtr.p->tabFile[1];
|
||||
ptrCheckGuard(filePtr, cfileFileSize, fileRecord);
|
||||
openFileRw(signal, filePtr);
|
||||
filePtr.p->reqStatus = FileRecord::OPENING_TABLE;
|
||||
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)
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
Loading…
Add table
Reference in a new issue