mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
Merge perch.ndb.mysql.com:/home/jonas/src/50-work
into perch.ndb.mysql.com:/home/jonas/src/51-work
This commit is contained in:
commit
1cfd066e90
5 changed files with 68 additions and 2 deletions
|
@ -1381,6 +1381,7 @@ private:
|
|||
Uint32 csystemnodes;
|
||||
Uint32 currentgcp;
|
||||
Uint32 c_newest_restorable_gci;
|
||||
Uint32 c_set_initial_start_flag;
|
||||
|
||||
enum GcpMasterTakeOverState {
|
||||
GMTOS_IDLE = 0,
|
||||
|
|
|
@ -61,6 +61,7 @@ void Dbdih::initData()
|
|||
c_blockCommit = false;
|
||||
c_blockCommitNo = 1;
|
||||
cntrlblockref = RNIL;
|
||||
c_set_initial_start_flag = FALSE;
|
||||
}//Dbdih::initData()
|
||||
|
||||
void Dbdih::initRecords()
|
||||
|
|
|
@ -677,6 +677,12 @@ done:
|
|||
Uint32 tmp= SYSFILE->m_restart_seq;
|
||||
memcpy(sysfileData, cdata, sizeof(sysfileData));
|
||||
SYSFILE->m_restart_seq = tmp;
|
||||
|
||||
if (c_set_initial_start_flag)
|
||||
{
|
||||
jam();
|
||||
Sysfile::setInitialStartOngoing(SYSFILE->systemRestartBits);
|
||||
}
|
||||
}
|
||||
|
||||
c_copyGCISlave.m_copyReason = reason;
|
||||
|
@ -1337,6 +1343,11 @@ void Dbdih::execNDB_STTOR(Signal* signal)
|
|||
// The permission is given by the master node in the alive set.
|
||||
/*-----------------------------------------------------------------------*/
|
||||
createMutexes(signal, 0);
|
||||
if (cstarttype == NodeState::ST_INITIAL_NODE_RESTART)
|
||||
{
|
||||
jam();
|
||||
c_set_initial_start_flag = TRUE; // In sysfile...
|
||||
}
|
||||
break;
|
||||
|
||||
case ZNDB_SPH3:
|
||||
|
@ -10804,6 +10815,17 @@ Dbdih::sendLCP_COMPLETE_REP(Signal* signal){
|
|||
|
||||
sendSignal(c_lcpState.m_masterLcpDihRef, GSN_LCP_COMPLETE_REP, signal,
|
||||
LcpCompleteRep::SignalLength, JBB);
|
||||
|
||||
/**
|
||||
* Say that an initial node restart does not need to be redone
|
||||
* once node has been part of first LCP
|
||||
*/
|
||||
if (c_set_initial_start_flag &&
|
||||
c_lcpState.m_participatingLQH.get(getOwnNodeId()))
|
||||
{
|
||||
jam();
|
||||
c_set_initial_start_flag = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------- */
|
||||
|
|
|
@ -11925,7 +11925,7 @@ void Dblqh::execGCP_SAVEREQ(Signal* signal)
|
|||
return;
|
||||
}
|
||||
|
||||
if (getNodeState().getNodeRestartInProgress())
|
||||
if (getNodeState().getNodeRestartInProgress() && cstartRecReq == ZFALSE)
|
||||
{
|
||||
GCPSaveRef * const saveRef = (GCPSaveRef*)&signal->theData[0];
|
||||
saveRef->dihPtr = dihPtr;
|
||||
|
@ -11972,7 +11972,6 @@ void Dblqh::execGCP_SAVEREQ(Signal* signal)
|
|||
}//if
|
||||
|
||||
ndbrequire(ccurrentGcprec == RNIL);
|
||||
|
||||
ccurrentGcprec = 0;
|
||||
gcpPtr.i = ccurrentGcprec;
|
||||
ptrCheckGuard(gcpPtr, cgcprecFileSize, gcpRecord);
|
||||
|
|
|
@ -1309,6 +1309,46 @@ retry:
|
|||
if (res.waitClusterStarted())
|
||||
return NDBT_FAILED;
|
||||
}
|
||||
|
||||
return NDBT_OK;
|
||||
}
|
||||
|
||||
int
|
||||
runBug26481(NDBT_Context* ctx, NDBT_Step* step)
|
||||
{
|
||||
|
||||
int result = NDBT_OK;
|
||||
int loops = ctx->getNumLoops();
|
||||
int records = ctx->getNumRecords();
|
||||
NdbRestarter res;
|
||||
|
||||
int node = res.getRandomNotMasterNodeId(rand());
|
||||
ndbout_c("node: %d", node);
|
||||
if (res.restartOneDbNode(node, true, true, true))
|
||||
return NDBT_FAILED;
|
||||
|
||||
if (res.waitNodesNoStart(&node, 1))
|
||||
return NDBT_FAILED;
|
||||
|
||||
int val2[] = { DumpStateOrd::CmvmiSetRestartOnErrorInsert, 1 };
|
||||
if (res.dumpStateOneNode(node, val2, 2))
|
||||
return NDBT_FAILED;
|
||||
|
||||
if (res.insertErrorInNode(node, 7018))
|
||||
return NDBT_FAILED;
|
||||
|
||||
if (res.startNodes(&node, 1))
|
||||
return NDBT_FAILED;
|
||||
|
||||
res.waitNodesStartPhase(&node, 1, 3);
|
||||
|
||||
if (res.waitNodesNoStart(&node, 1))
|
||||
return NDBT_FAILED;
|
||||
|
||||
res.startNodes(&node, 1);
|
||||
|
||||
if (res.waitClusterStarted())
|
||||
return NDBT_FAILED;
|
||||
|
||||
return NDBT_OK;
|
||||
}
|
||||
|
@ -1654,6 +1694,9 @@ TESTCASE("Bug25984", ""){
|
|||
TESTCASE("Bug26457", ""){
|
||||
INITIALIZER(runBug26457);
|
||||
}
|
||||
TESTCASE("Bug26481", ""){
|
||||
INITIALIZER(runBug26481);
|
||||
}
|
||||
NDBT_TESTSUITE_END(testNodeRestart);
|
||||
|
||||
int main(int argc, const char** argv){
|
||||
|
|
Loading…
Add table
Reference in a new issue