mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
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
3 changed files with 69 additions and 5 deletions
|
@ -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…
Add table
Reference in a new issue