Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-rpl
This commit is contained in:
commit
0a1c65b6e3
@ -11794,6 +11794,13 @@ void Dblqh::sendLCP_COMPLETE_REP(Signal* signal, Uint32 lcpId)
|
|||||||
jam();
|
jam();
|
||||||
sendEMPTY_LCP_CONF(signal, true);
|
sendEMPTY_LCP_CONF(signal, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (getNodeState().getNodeRestartInProgress())
|
||||||
|
{
|
||||||
|
jam();
|
||||||
|
ndbrequire(cstartRecReq == 2);
|
||||||
|
cstartRecReq = 3;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
|
|
||||||
}//Dblqh::sendCOMP_LCP_ROUND()
|
}//Dblqh::sendCOMP_LCP_ROUND()
|
||||||
@ -12064,15 +12071,27 @@ void Dblqh::execGCP_SAVEREQ(Signal* signal)
|
|||||||
}//if
|
}//if
|
||||||
|
|
||||||
ndbrequire(ccurrentGcprec == RNIL);
|
ndbrequire(ccurrentGcprec == RNIL);
|
||||||
ccurrentGcprec = 0;
|
|
||||||
gcpPtr.i = ccurrentGcprec;
|
|
||||||
ptrCheckGuard(gcpPtr, cgcprecFileSize, gcpRecord);
|
|
||||||
|
|
||||||
cnewestCompletedGci = gci;
|
cnewestCompletedGci = gci;
|
||||||
if (gci > cnewestGci) {
|
if (gci > cnewestGci) {
|
||||||
jam();
|
jam();
|
||||||
cnewestGci = gci;
|
cnewestGci = gci;
|
||||||
}//if
|
}//if
|
||||||
|
|
||||||
|
if(getNodeState().getNodeRestartInProgress() && cstartRecReq < 3)
|
||||||
|
{
|
||||||
|
GCPSaveRef * const saveRef = (GCPSaveRef*)&signal->theData[0];
|
||||||
|
saveRef->dihPtr = dihPtr;
|
||||||
|
saveRef->nodeId = getOwnNodeId();
|
||||||
|
saveRef->gci = gci;
|
||||||
|
saveRef->errorCode = GCPSaveRef::NodeRestartInProgress;
|
||||||
|
sendSignal(dihBlockRef, GSN_GCP_SAVEREF, signal,
|
||||||
|
GCPSaveRef::SignalLength, JBB);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ccurrentGcprec = 0;
|
||||||
|
gcpPtr.i = ccurrentGcprec;
|
||||||
|
ptrCheckGuard(gcpPtr, cgcprecFileSize, gcpRecord);
|
||||||
|
|
||||||
gcpPtr.p->gcpBlockref = dihBlockRef;
|
gcpPtr.p->gcpBlockref = dihBlockRef;
|
||||||
gcpPtr.p->gcpUserptr = dihPtr;
|
gcpPtr.p->gcpUserptr = dihPtr;
|
||||||
|
@ -10235,6 +10235,7 @@ void Dbtc::inithost(Signal* signal)
|
|||||||
hostptr.p->noOfWordsTCINDXCONF = 0;
|
hostptr.p->noOfWordsTCINDXCONF = 0;
|
||||||
hostptr.p->noOfPackedWordsLqh = 0;
|
hostptr.p->noOfPackedWordsLqh = 0;
|
||||||
hostptr.p->hostLqhBlockRef = calcLqhBlockRef(hostptr.i);
|
hostptr.p->hostLqhBlockRef = calcLqhBlockRef(hostptr.i);
|
||||||
|
hostptr.p->m_nf_bits = 0;
|
||||||
}//for
|
}//for
|
||||||
c_alive_nodes.clear();
|
c_alive_nodes.clear();
|
||||||
}//Dbtc::inithost()
|
}//Dbtc::inithost()
|
||||||
|
@ -963,12 +963,62 @@ int runBug24717(NDBT_Context* ctx, NDBT_Step* step){
|
|||||||
|
|
||||||
restarter.startNodes(&nodeId, 1);
|
restarter.startNodes(&nodeId, 1);
|
||||||
|
|
||||||
for (Uint32 i = 0; i < 100; i++)
|
do {
|
||||||
{
|
for (Uint32 i = 0; i < 100; i++)
|
||||||
hugoTrans.pkReadRecords(pNdb, 100, 1, NdbOperation::LM_CommittedRead);
|
{
|
||||||
}
|
hugoTrans.pkReadRecords(pNdb, 100, 1, NdbOperation::LM_CommittedRead);
|
||||||
|
}
|
||||||
|
} while (restarter.waitClusterStarted(5) != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NDBT_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
runBug29364(NDBT_Context* ctx, NDBT_Step* step){
|
||||||
|
int result = NDBT_OK;
|
||||||
|
int loops = ctx->getNumLoops();
|
||||||
|
int records = ctx->getNumRecords();
|
||||||
|
NdbRestarter restarter;
|
||||||
|
Ndb* pNdb = GETNDB(step);
|
||||||
|
|
||||||
|
HugoTransactions hugoTrans(*ctx->getTab());
|
||||||
|
|
||||||
|
if (restarter.getNumDbNodes() < 4)
|
||||||
|
return NDBT_OK;
|
||||||
|
|
||||||
|
int dump0[] = { 9000, 0 } ;
|
||||||
|
int dump1[] = { 9001, 0 } ;
|
||||||
|
Uint32 ownNode = refToNode(pNdb->getReference());
|
||||||
|
dump0[1] = ownNode;
|
||||||
|
|
||||||
|
for (; loops; loops --)
|
||||||
|
{
|
||||||
|
int node0 = restarter.getDbNodeId(rand() % restarter.getNumDbNodes());
|
||||||
|
int node1 = restarter.getRandomNodeOtherNodeGroup(node0, rand());
|
||||||
|
|
||||||
|
restarter.restartOneDbNode(node0, false, true, true);
|
||||||
|
restarter.waitNodesNoStart(&node0, 1);
|
||||||
|
restarter.startNodes(&node0, 1);
|
||||||
restarter.waitClusterStarted();
|
restarter.waitClusterStarted();
|
||||||
|
|
||||||
|
restarter.restartOneDbNode(node1, false, true, true);
|
||||||
|
restarter.waitNodesNoStart(&node1, 1);
|
||||||
|
if (restarter.dumpStateOneNode(node1, dump0, 2))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
restarter.startNodes(&node1, 1);
|
||||||
|
|
||||||
|
do {
|
||||||
|
|
||||||
|
for (Uint32 i = 0; i < 100; i++)
|
||||||
|
{
|
||||||
|
hugoTrans.pkReadRecords(pNdb, 100, 1, NdbOperation::LM_CommittedRead);
|
||||||
|
}
|
||||||
|
} while (restarter.waitClusterStarted(5) != 0);
|
||||||
|
|
||||||
|
if (restarter.dumpStateOneNode(node1, dump1, 1))
|
||||||
|
return NDBT_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NDBT_OK;
|
return NDBT_OK;
|
||||||
@ -2075,6 +2125,9 @@ TESTCASE("Bug28023", ""){
|
|||||||
TESTCASE("Bug28717", ""){
|
TESTCASE("Bug28717", ""){
|
||||||
INITIALIZER(runBug28717);
|
INITIALIZER(runBug28717);
|
||||||
}
|
}
|
||||||
|
TESTCASE("Bug29364", ""){
|
||||||
|
INITIALIZER(runBug29364);
|
||||||
|
}
|
||||||
NDBT_TESTSUITE_END(testNodeRestart);
|
NDBT_TESTSUITE_END(testNodeRestart);
|
||||||
|
|
||||||
int main(int argc, const char** argv){
|
int main(int argc, const char** argv){
|
||||||
|
@ -569,6 +569,10 @@ max-time: 1000
|
|||||||
cmd: testNodeRestart
|
cmd: testNodeRestart
|
||||||
args: -n Bug28023 T7 D2
|
args: -n Bug28023 T7 D2
|
||||||
|
|
||||||
|
max-time: 1000
|
||||||
|
cmd: testNodeRestart
|
||||||
|
args: -n Bug29364 T1
|
||||||
|
|
||||||
#
|
#
|
||||||
# DICT TESTS
|
# DICT TESTS
|
||||||
max-time: 1500
|
max-time: 1500
|
||||||
|
Loading…
x
Reference in New Issue
Block a user