updated for bug#28770

parent cb2c31c5
......@@ -4,7 +4,7 @@ Next NDBFS 2000
Next DBACC 3002
Next DBTUP 4029
Next DBLQH 5045
Next DBDICT 6007
Next DBDICT 6008
Next DBDIH 7184
Next DBTC 8040
Next CMVMI 9000
......@@ -503,6 +503,7 @@ Dbdict:
6003 Crash in participant @ CreateTabReq::Prepare
6004 Crash in participant @ CreateTabReq::Commit
6005 Crash in participant @ CreateTabReq::CreateDrop
6007 Fail on readTableFile for READ_TAB_FILE1 (28770)
Dbtup:
4014 - handleInsert - Out of undo buffer
......
......@@ -802,6 +802,15 @@ void Dbdict::execFSREADCONF(Signal* signal)
readSchemaConf(signal ,fsPtr);
break;
case FsConnectRecord::READ_TAB_FILE1:
if(ERROR_INSERTED(6007)){
jam();
FsRef * const fsRef = (FsRef *)&signal->theData[0];
fsRef->userPointer = fsConf->userPointer;
fsRef->setErrorCode(fsRef->errorCode, NDBD_EXIT_AFS_UNKNOWN);
fsRef->osErrorCode = ~0; // Indicate local error
execFSREADREF(signal);
return;
}//Testing how DICT behave if read of file 1 fails (Bug#28770)
case FsConnectRecord::READ_TAB_FILE2:
jam();
readTableConf(signal ,fsPtr);
......
......@@ -1261,6 +1261,39 @@ runBug29167(NDBT_Context* ctx, NDBT_Step* step)
return result;
}
int
runBug28770(NDBT_Context* ctx, NDBT_Step* step) {
Ndb* pNdb = GETNDB(step);
NdbRestarter restarter;
int result = NDBT_OK;
int count = 0;
Uint32 i = 0;
Uint32 loops = ctx->getNumLoops();
int records = ctx->getNumRecords();
UtilTransactions utilTrans(*ctx->getTab());
HugoTransactions hugoTrans(*ctx->getTab());
g_info << "Loading records..." << endl; hugoTrans.loadTable(pNdb,
records);
while(i<=loops && result != NDBT_FAILED){
g_info << "Loop " << i << "/"<< loops <<" started" << endl;
CHECK(restarter.restartAll(false, true, false) == 0);
NdbSleep_SecSleep(3);
CHECK(restarter.waitClusterNoStart() == 0);
restarter.insertErrorInAllNodes(6007);
CHECK(restarter.startAll()== 0);
CHECK(restarter.waitClusterStarted() == 0);
CHECK(utilTrans.selectCount(pNdb, 64, &count) == 0);
CHECK(count == records);
i++;
}
ndbout << " runBug28770 finished" << endl;
return result;
}
NDBT_TESTSUITE(testSystemRestart);
TESTCASE("SR1",
"Basic system restart test. Focus on testing restart from REDO log.\n"
......@@ -1446,6 +1479,20 @@ TESTCASE("Bug29167", "")
INITIALIZER(runWaitStarted);
STEP(runBug29167);
}
TESTCASE("Bug28770",
"Check readTableFile1 fails, readTableFile2 succeeds\n"
"1. Restart all node -nostart\n"
"2. Insert error 6100 into all nodes\n"
"3. Start all nodes\n"
"4. Ensure cluster start\n"
"5. Read and verify reocrds\n"
"6. Repeat until looping is completed\n"){
INITIALIZER(runWaitStarted);
INITIALIZER(runClearTable);
STEP(runBug28770);
FINALIZER(runClearTable);
}
NDBT_TESTSUITE_END(testSystemRestart);
......
......@@ -489,6 +489,10 @@ max-time: 300
cmd: testSystemRestart
args: -n Bug29167 T1
max-time: 300
cmd: testSystemRestart
args: -l 2 -n Bug28770 T1
max-time: 1000
cmd: testNodeRestart
args: -n Bug27283 T1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment