mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +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/dbtc/DbtcMain.cpp: Auto merged storage/ndb/test/ndbapi/testTimeout.cpp: Auto merged
This commit is contained in:
commit
7037b80970
2 changed files with 72 additions and 1 deletions
|
@ -6310,6 +6310,18 @@ void Dbtc::timeOutFoundLab(Signal* signal, Uint32 TapiConPtr, Uint32 errCode)
|
||||||
break;
|
break;
|
||||||
case CS_START_SCAN:{
|
case CS_START_SCAN:{
|
||||||
jam();
|
jam();
|
||||||
|
|
||||||
|
/*
|
||||||
|
We are waiting for application to continue the transaction. In this
|
||||||
|
particular state we will use the application timeout parameter rather
|
||||||
|
than the shorter Deadlock detection timeout.
|
||||||
|
*/
|
||||||
|
if (c_appl_timeout_value == 0 ||
|
||||||
|
(ctcTimer - getApiConTimer(apiConnectptr.i)) <= c_appl_timeout_value) {
|
||||||
|
jam();
|
||||||
|
return;
|
||||||
|
}//if
|
||||||
|
|
||||||
ScanRecordPtr scanPtr;
|
ScanRecordPtr scanPtr;
|
||||||
scanPtr.i = apiConnectptr.p->apiScanRec;
|
scanPtr.i = apiConnectptr.p->apiScanRec;
|
||||||
ptrCheckGuard(scanPtr, cscanrecFileSize, scanRecord);
|
ptrCheckGuard(scanPtr, cscanrecFileSize, scanRecord);
|
||||||
|
@ -9841,6 +9853,17 @@ void Dbtc::sendScanTabConf(Signal* signal, ScanRecordPtr scanPtr) {
|
||||||
conf->requestInfo = op_count | ScanTabConf::EndOfData;
|
conf->requestInfo = op_count | ScanTabConf::EndOfData;
|
||||||
releaseScanResources(scanPtr);
|
releaseScanResources(scanPtr);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (scanPtr.p->m_running_scan_frags.isEmpty())
|
||||||
|
{
|
||||||
|
jam();
|
||||||
|
/**
|
||||||
|
* All scan frags delivered...waiting for API
|
||||||
|
*/
|
||||||
|
setApiConTimer(apiConnectptr.i, ctcTimer, __LINE__);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(4 + 3 * op_count > 25){
|
if(4 + 3 * op_count > 25){
|
||||||
jam();
|
jam();
|
||||||
|
|
|
@ -388,6 +388,45 @@ int runBuddyTransNoTimeout(NDBT_Context* ctx, NDBT_Step* step){
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int runBuddyTransTimeout(NDBT_Context* ctx, NDBT_Step* step){
|
||||||
|
int result = NDBT_OK;
|
||||||
|
int loops = ctx->getNumLoops();
|
||||||
|
int records = ctx->getNumRecords();
|
||||||
|
int stepNo = step->getStepNo();
|
||||||
|
ndbout << "TransactionInactiveTimeout="<< TIMEOUT <<endl;
|
||||||
|
|
||||||
|
HugoOperations hugoOps(*ctx->getTab());
|
||||||
|
Ndb* pNdb = GETNDB(step);
|
||||||
|
|
||||||
|
for (int l = 1; l < loops && result == NDBT_OK; l++){
|
||||||
|
|
||||||
|
NdbTransaction* pTrans = 0;
|
||||||
|
do{
|
||||||
|
pTrans = pNdb->startTransaction();
|
||||||
|
NdbScanOperation* pOp = pTrans->getNdbScanOperation(ctx->getTab());
|
||||||
|
CHECK(pOp->readTuples(NdbOperation::LM_Read, 0, 0, 1) == 0);
|
||||||
|
CHECK(pTrans->execute(NoCommit) == 0);
|
||||||
|
|
||||||
|
int sleep = 2 * TIMEOUT;
|
||||||
|
ndbout << "Sleeping for " << sleep << " milliseconds" << endl;
|
||||||
|
NdbSleep_MilliSleep(sleep);
|
||||||
|
|
||||||
|
int res = 0;
|
||||||
|
while((res = pOp->nextResult()) == 0);
|
||||||
|
ndbout_c("res: %d", res);
|
||||||
|
CHECK(res == -1);
|
||||||
|
|
||||||
|
} while(false);
|
||||||
|
|
||||||
|
if (pTrans)
|
||||||
|
{
|
||||||
|
pTrans->close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
runError4012(NDBT_Context* ctx, NDBT_Step* step){
|
runError4012(NDBT_Context* ctx, NDBT_Step* step){
|
||||||
int result = NDBT_OK;
|
int result = NDBT_OK;
|
||||||
|
@ -495,6 +534,15 @@ TESTCASE("BuddyTransNoTimeout5",
|
||||||
FINALIZER(resetTransactionTimeout);
|
FINALIZER(resetTransactionTimeout);
|
||||||
FINALIZER(runClearTable);
|
FINALIZER(runClearTable);
|
||||||
}
|
}
|
||||||
|
TESTCASE("BuddyTransTimeout1",
|
||||||
|
"Start a scan and check that it gets aborted"){
|
||||||
|
INITIALIZER(runLoadTable);
|
||||||
|
INITIALIZER(setTransactionTimeout);
|
||||||
|
STEPS(runBuddyTransTimeout, 1);
|
||||||
|
FINALIZER(resetTransactionTimeout);
|
||||||
|
FINALIZER(runClearTable);
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
TESTCASE("Error4012", ""){
|
TESTCASE("Error4012", ""){
|
||||||
TC_PROPERTY("TransactionDeadlockTimeout", 120000);
|
TC_PROPERTY("TransactionDeadlockTimeout", 120000);
|
||||||
INITIALIZER(runLoadTable);
|
INITIALIZER(runLoadTable);
|
||||||
|
@ -503,7 +551,7 @@ TESTCASE("Error4012", ""){
|
||||||
STEPS(runError4012, 2);
|
STEPS(runError4012, 2);
|
||||||
FINALIZER(runClearTable);
|
FINALIZER(runClearTable);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
NDBT_TESTSUITE_END(testTimeout);
|
NDBT_TESTSUITE_END(testTimeout);
|
||||||
|
|
||||||
int main(int argc, const char** argv){
|
int main(int argc, const char** argv){
|
||||||
|
|
Loading…
Reference in a new issue