#At file:///home/jonas/src/telco-6.3/
2798 Jonas Oreland 2008-12-15 [merge]
merge 62 to 63
modified:
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp
storage/ndb/test/ndbapi/testNodeRestart.cpp
storage/ndb/test/run-test/daily-basic-tests.txt
=== modified file 'storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp'
--- a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp 2008-12-12 14:05:37 +0000
+++ b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp 2008-12-15 19:38:37 +0000
@@ -5115,6 +5115,12 @@ void Dbdih::startGcpMasterTakeOver(Signa
signal->theData[0] = NDB_LE_GCP_TakeoverStarted;
sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 1, JBB);
+ /**
+ * save own value...
+ * to be able to check values returned in MASTER_GCPCONF
+ */
+ m_gcp_save.m_master.m_new_gci = m_gcp_save.m_gci;
+
setLocalNodefailHandling(signal, oldMasterId, NF_GCP_TAKE_OVER);
}//Dbdih::handleNewMaster()
@@ -5366,6 +5372,17 @@ void Dbdih::execMASTER_GCPCONF(Signal* s
ndbassert(ok); // Unhandled case...
ok = false;
+ /**
+ * GCI should differ with atmost one
+ */
+ ndbrequire(saveGCI == m_gcp_save.m_gci ||
+ saveGCI == m_gcp_save.m_gci + 1 ||
+ saveGCI + 1 == m_gcp_save.m_gci);
+ if (saveGCI > m_gcp_save.m_master.m_new_gci)
+ {
+ jam();
+ m_gcp_save.m_master.m_new_gci = saveGCI;
+ }
switch(saveState){
case MasterGCPConf::GCP_SAVE_IDLE:
jam();
@@ -5480,7 +5497,6 @@ void Dbdih::MASTER_GCPhandling(Signal* s
else
{
ok = false;
- m_gcp_save.m_master.m_new_gci = m_gcp_save.m_gci;
switch(m_gcp_save.m_master.m_state){
case GcpSave::GCP_SAVE_IDLE:
jam();
@@ -8239,6 +8255,21 @@ void Dbdih::execGCP_NODEFINISH(Signal* s
sendSignalWithDelay(CMVMI_REF, GSN_NDB_TAMPER, signal, 1000, 1);
return;
}
+ else if (ERROR_INSERTED(7216))
+ {
+ infoEvent("GCP_SAVE all/%u", c_error_insert_extra);
+ NodeRecordPtr nodePtr;
+ nodePtr.i = c_error_insert_extra;
+ ptrAss(nodePtr, nodeRecord);
+
+ removeAlive(nodePtr);
+ sendLoopMacro(GCP_SAVEREQ, sendGCP_SAVEREQ, RNIL);
+ insertAlive(nodePtr);
+ signal->theData[0] = 9999;
+ sendSignalWithDelay(CMVMI_REF, GSN_NDB_TAMPER, signal, 1000, 1);
+ c_GCP_SAVEREQ_Counter.setWaitingFor(c_error_insert_extra);
+ return;
+ }
#endif
sendLoopMacro(GCP_SAVEREQ, sendGCP_SAVEREQ, RNIL);
@@ -15357,6 +15388,12 @@ Dbdih::execDUMP_STATE_ORD(Signal* signal
SET_ERROR_INSERT_VALUE2(7214, signal->theData[1]);
return;
}
+
+ DECLARE_DUMP0(DBDIH, 7216, "Set error 7216 with extra arg")
+ {
+ SET_ERROR_INSERT_VALUE2(7216, signal->theData[1]);
+ return;
+ }
}//Dbdih::execDUMP_STATE_ORD()
void
=== modified file 'storage/ndb/test/ndbapi/testNodeRestart.cpp'
--- a/storage/ndb/test/ndbapi/testNodeRestart.cpp 2008-12-08 13:39:11 +0000
+++ b/storage/ndb/test/ndbapi/testNodeRestart.cpp 2008-12-15 19:38:37 +0000
@@ -3448,6 +3448,46 @@ runBug41295(NDBT_Context* ctx, NDBT_Step
return NDBT_OK;
}
+int
+runBug41469(NDBT_Context* ctx, NDBT_Step* step)
+{
+ NdbRestarter res;
+
+ if (res.getNumDbNodes() < 4)
+ {
+ ctx->stopTest();
+ return NDBT_OK;
+ }
+
+ int loops = ctx->getNumLoops();
+
+ int val0[] = { 7216, 0 };
+ int val2[] = { DumpStateOrd::CmvmiSetRestartOnErrorInsert, 1 };
+ for (int i = 0; i<loops; i++)
+ {
+ int master = res.getMasterNodeId();
+ int next = res.getNextMasterNodeId(master);
+
+ if (res.dumpStateOneNode(master, val2, 2))
+ return NDBT_FAILED;
+
+ ndbout_c("stopping %u, err 7216 (next: %u)", master, next);
+ val0[1] = next;
+ if (res.dumpStateOneNode(master, val0, 2))
+ return NDBT_FAILED;
+
+ res.waitNodesNoStart(&master, 1);
+ res.startNodes(&master, 1);
+ ndbout_c("waiting for cluster started");
+ if (res.waitClusterStarted())
+ {
+ return NDBT_FAILED;
+ }
+ }
+ ctx->stopTest();
+ return NDBT_OK;
+}
+
NDBT_TESTSUITE(testNodeRestart);
TESTCASE("NoLoad",
"Test that one node at a time can be stopped and then restarted "\
@@ -3919,6 +3959,12 @@ TESTCASE("Bug41295", "")
STEP(runBug41295);
FINALIZER(runClearTable);
}
+TESTCASE("Bug41469", ""){
+ INITIALIZER(runLoadTable);
+ STEP(runBug41469);
+ STEP(runScanUpdateUntilStopped);
+ FINALIZER(runClearTable);
+}
NDBT_TESTSUITE_END(testNodeRestart);
int main(int argc, const char** argv){
=== modified file 'storage/ndb/test/run-test/daily-basic-tests.txt'
--- a/storage/ndb/test/run-test/daily-basic-tests.txt 2008-12-09 15:47:14 +0000
+++ b/storage/ndb/test/run-test/daily-basic-tests.txt 2008-12-15 19:38:37 +0000
@@ -990,6 +990,10 @@ max-time: 5000
cmd: testNodeRestart
args: -n GCP T1
+max-time: 1200
+cmd: testNodeRestart
+args: -n Bug41469 T1
+
max-time: 180
cmd: testIndex
args: -n Bug28804 T1 T6
| Thread |
|---|
| • bzr commit into mysql-5.1 branch (jonas:2798) | Jonas Oreland | 15 Dec |