ndb - bug#29364 - "SQL queries hang while data node in start phase 5"
In TC init node status for already started nodes during node restart (not present in 5.1)
This commit is contained in:
parent
2609e057eb
commit
f6c0acde24
@ -882,6 +882,12 @@ void Dbtc::execREAD_NODESCONF(Signal* signal)
|
||||
hostptr.p->hostStatus = HS_ALIVE;
|
||||
c_alive_nodes.set(i);
|
||||
}//if
|
||||
|
||||
if (NodeBitmask::get(readNodes->startedNodes, i))
|
||||
{
|
||||
jam();
|
||||
hostptr.p->m_nf_bits = HostRecord::NF_STARTED;
|
||||
}
|
||||
}//if
|
||||
}//for
|
||||
ndbsttorry010Lab(signal);
|
||||
@ -10108,6 +10114,7 @@ void Dbtc::inithost(Signal* signal)
|
||||
hostptr.p->noOfWordsTCINDXCONF = 0;
|
||||
hostptr.p->noOfPackedWordsLqh = 0;
|
||||
hostptr.p->hostLqhBlockRef = calcLqhBlockRef(hostptr.i);
|
||||
hostptr.p->m_nf_bits = 0;
|
||||
}//for
|
||||
c_alive_nodes.clear();
|
||||
}//Dbtc::inithost()
|
||||
|
@ -944,12 +944,62 @@ int runBug24717(NDBT_Context* ctx, NDBT_Step* step){
|
||||
|
||||
restarter.startNodes(&nodeId, 1);
|
||||
|
||||
for (Uint32 i = 0; i < 100; i++)
|
||||
{
|
||||
hugoTrans.pkReadRecords(pNdb, 100, 1, NdbOperation::LM_CommittedRead);
|
||||
}
|
||||
|
||||
do {
|
||||
for (Uint32 i = 0; i < 100; i++)
|
||||
{
|
||||
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.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;
|
||||
@ -1553,6 +1603,9 @@ TESTCASE("Bug27003", ""){
|
||||
TESTCASE("Bug27283", ""){
|
||||
INITIALIZER(runBug27283);
|
||||
}
|
||||
TESTCASE("Bug29364", ""){
|
||||
INITIALIZER(runBug29364);
|
||||
}
|
||||
NDBT_TESTSUITE_END(testNodeRestart);
|
||||
|
||||
int main(int argc, const char** argv){
|
||||
|
@ -477,6 +477,10 @@ max-time: 1000
|
||||
cmd: testNodeRestart
|
||||
args: -n Bug24717 T1
|
||||
|
||||
max-time: 1000
|
||||
cmd: testNodeRestart
|
||||
args: -n Bug29364 T1
|
||||
|
||||
max-time: 1000
|
||||
cmd: testNodeRestart
|
||||
args: -n Bug25364 T1
|
||||
|
Loading…
x
Reference in New Issue
Block a user