updated for bug#28770

parent cb2c31c5
...@@ -4,7 +4,7 @@ Next NDBFS 2000 ...@@ -4,7 +4,7 @@ Next NDBFS 2000
Next DBACC 3002 Next DBACC 3002
Next DBTUP 4029 Next DBTUP 4029
Next DBLQH 5045 Next DBLQH 5045
Next DBDICT 6007 Next DBDICT 6008
Next DBDIH 7184 Next DBDIH 7184
Next DBTC 8040 Next DBTC 8040
Next CMVMI 9000 Next CMVMI 9000
...@@ -503,6 +503,7 @@ Dbdict: ...@@ -503,6 +503,7 @@ Dbdict:
6003 Crash in participant @ CreateTabReq::Prepare 6003 Crash in participant @ CreateTabReq::Prepare
6004 Crash in participant @ CreateTabReq::Commit 6004 Crash in participant @ CreateTabReq::Commit
6005 Crash in participant @ CreateTabReq::CreateDrop 6005 Crash in participant @ CreateTabReq::CreateDrop
6007 Fail on readTableFile for READ_TAB_FILE1 (28770)
Dbtup: Dbtup:
4014 - handleInsert - Out of undo buffer 4014 - handleInsert - Out of undo buffer
......
...@@ -802,6 +802,15 @@ void Dbdict::execFSREADCONF(Signal* signal) ...@@ -802,6 +802,15 @@ void Dbdict::execFSREADCONF(Signal* signal)
readSchemaConf(signal ,fsPtr); readSchemaConf(signal ,fsPtr);
break; break;
case FsConnectRecord::READ_TAB_FILE1: 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: case FsConnectRecord::READ_TAB_FILE2:
jam(); jam();
readTableConf(signal ,fsPtr); readTableConf(signal ,fsPtr);
......
...@@ -1261,6 +1261,39 @@ runBug29167(NDBT_Context* ctx, NDBT_Step* step) ...@@ -1261,6 +1261,39 @@ runBug29167(NDBT_Context* ctx, NDBT_Step* step)
return result; 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); NDBT_TESTSUITE(testSystemRestart);
TESTCASE("SR1", TESTCASE("SR1",
"Basic system restart test. Focus on testing restart from REDO log.\n" "Basic system restart test. Focus on testing restart from REDO log.\n"
...@@ -1446,6 +1479,20 @@ TESTCASE("Bug29167", "") ...@@ -1446,6 +1479,20 @@ TESTCASE("Bug29167", "")
INITIALIZER(runWaitStarted); INITIALIZER(runWaitStarted);
STEP(runBug29167); 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); NDBT_TESTSUITE_END(testSystemRestart);
......
...@@ -489,6 +489,10 @@ max-time: 300 ...@@ -489,6 +489,10 @@ max-time: 300
cmd: testSystemRestart cmd: testSystemRestart
args: -n Bug29167 T1 args: -n Bug29167 T1
max-time: 300
cmd: testSystemRestart
args: -l 2 -n Bug28770 T1
max-time: 1000 max-time: 1000
cmd: testNodeRestart cmd: testNodeRestart
args: -n Bug27283 T1 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