ndb - bug#21536
Make sure updateNodeInfo is run on master also for temporary tables ndb/src/kernel/blocks/dbdih/DbdihMain.cpp: Run update nodeinfo also here to handle temprorary tables in some situations ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp: new error insert ndb/test/ndbapi/testSystemRestart.cpp: test case
This commit is contained in:
parent
6e5ad6914e
commit
3d7cb87b00
@ -8338,6 +8338,7 @@ Dbdih::resetReplicaSr(TabRecordPtr tabPtr){
|
||||
}
|
||||
replicaPtr.i = nextReplicaPtrI;
|
||||
}//while
|
||||
updateNodeInfo(fragPtr);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2036,6 +2036,11 @@ void Ndbcntr::execSET_VAR_REQ(Signal* signal) {
|
||||
void Ndbcntr::updateNodeState(Signal* signal, const NodeState& newState) const{
|
||||
NodeStateRep * const stateRep = (NodeStateRep *)&signal->theData[0];
|
||||
|
||||
if (newState.startLevel == NodeState::SL_STARTED)
|
||||
{
|
||||
CRASH_INSERTION(1000);
|
||||
}
|
||||
|
||||
stateRep->nodeState = newState;
|
||||
stateRep->nodeState.masterNodeId = cmasterNodeId;
|
||||
stateRep->nodeState.setNodeGroup(c_nodeGroup);
|
||||
@ -2826,7 +2831,7 @@ void Ndbcntr::Missra::sendNextSTTOR(Signal* signal){
|
||||
cntr.sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 3, JBB);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
signal->theData[0] = EventReport::NDBStartCompleted;
|
||||
signal->theData[1] = NDB_VERSION;
|
||||
cntr.sendSignal(CMVMI_REF, GSN_EVENT_REP, signal, 2, JBB);
|
||||
|
@ -1121,6 +1121,46 @@ int runClearTable(NDBT_Context* ctx, NDBT_Step* step){
|
||||
return NDBT_OK;
|
||||
}
|
||||
|
||||
int
|
||||
runBug21536(NDBT_Context* ctx, NDBT_Step* step)
|
||||
{
|
||||
NdbRestarter restarter;
|
||||
const Uint32 nodeCount = restarter.getNumDbNodes();
|
||||
if(nodeCount != 2){
|
||||
g_info << "Bug21536 - 2 nodes to test" << endl;
|
||||
return NDBT_OK;
|
||||
}
|
||||
|
||||
int node1 = restarter.getDbNodeId(rand() % nodeCount);
|
||||
int node2 = restarter.getRandomNodeSameNodeGroup(node1, rand());
|
||||
|
||||
if (node1 == -1 || node2 == -1)
|
||||
return NDBT_OK;
|
||||
|
||||
int result = NDBT_OK;
|
||||
do {
|
||||
CHECK(restarter.restartOneDbNode(node1, false, true, true) == 0);
|
||||
CHECK(restarter.waitNodesNoStart(&node1, 1) == 0);
|
||||
CHECK(restarter.insertErrorInNode(node1, 1000) == 0);
|
||||
int val2[] = { DumpStateOrd::CmvmiSetRestartOnErrorInsert, 1 };
|
||||
CHECK(restarter.dumpStateOneNode(node1, val2, 2) == 0);
|
||||
CHECK(restarter.startNodes(&node1, 1) == 0);
|
||||
restarter.waitNodesStartPhase(&node1, 1, 3, 120);
|
||||
CHECK(restarter.waitNodesNoStart(&node1, 1) == 0);
|
||||
|
||||
CHECK(restarter.restartOneDbNode(node2, true, true, true) == 0);
|
||||
CHECK(restarter.waitNodesNoStart(&node2, 1) == 0);
|
||||
CHECK(restarter.startNodes(&node1, 1) == 0);
|
||||
CHECK(restarter.waitNodesStarted(&node1, 1) == 0);
|
||||
CHECK(restarter.startNodes(&node2, 1) == 0);
|
||||
CHECK(restarter.waitClusterStarted() == 0);
|
||||
|
||||
} while(0);
|
||||
|
||||
g_info << "Bug21536 finished" << endl;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
NDBT_TESTSUITE(testSystemRestart);
|
||||
TESTCASE("SR1",
|
||||
@ -1287,6 +1327,13 @@ TESTCASE("Bug18385",
|
||||
STEP(runBug18385);
|
||||
FINALIZER(runClearTable);
|
||||
}
|
||||
TESTCASE("Bug21536",
|
||||
"Perform partition system restart with other nodes with higher GCI"){
|
||||
INITIALIZER(runWaitStarted);
|
||||
INITIALIZER(runClearTable);
|
||||
STEP(runBug21536);
|
||||
FINALIZER(runClearTable);
|
||||
}
|
||||
NDBT_TESTSUITE_END(testSystemRestart);
|
||||
|
||||
int main(int argc, const char** argv){
|
||||
|
Loading…
x
Reference in New Issue
Block a user