mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
ndb -
add testcase for bug#24717 + fix typo
This commit is contained in:
parent
9d1ff70e85
commit
61c6f532d2
5 changed files with 64 additions and 6 deletions
|
@ -91,6 +91,7 @@ Cmvmi::Cmvmi(const Configuration & conf) :
|
|||
addRecSignal(GSN_DUMP_STATE_ORD, &Cmvmi::execDUMP_STATE_ORD);
|
||||
|
||||
addRecSignal(GSN_TESTSIG, &Cmvmi::execTESTSIG);
|
||||
addRecSignal(GSN_NODE_START_REP, &Cmvmi::execNODE_START_REP, true);
|
||||
|
||||
subscriberPool.setSize(5);
|
||||
|
||||
|
@ -423,7 +424,8 @@ void Cmvmi::execOPEN_COMREQ(Signal* signal)
|
|||
if(len == 2){
|
||||
|
||||
#ifdef ERROR_INSERT
|
||||
if (! (ERROR_INSERTED(9000) && c_error_9000_nodes_mask.get(tStartingNode)))
|
||||
if (! ((ERROR_INSERTED(9000) || ERROR_INSERTED(9002))
|
||||
&& c_error_9000_nodes_mask.get(tStartingNode)))
|
||||
#endif
|
||||
{
|
||||
globalTransporterRegistry.do_connect(tStartingNode);
|
||||
|
@ -444,7 +446,8 @@ void Cmvmi::execOPEN_COMREQ(Signal* signal)
|
|||
jam();
|
||||
|
||||
#ifdef ERROR_INSERT
|
||||
if (ERROR_INSERTED(9000) && c_error_9000_nodes_mask.get(i))
|
||||
if ((ERROR_INSERTED(9000) || ERROR_INSERTED(9002))
|
||||
&& c_error_9000_nodes_mask.get(i))
|
||||
continue;
|
||||
#endif
|
||||
|
||||
|
@ -1142,9 +1145,9 @@ Cmvmi::execDUMP_STATE_ORD(Signal* signal)
|
|||
}
|
||||
|
||||
#ifdef ERROR_INSERT
|
||||
if (arg == 9000)
|
||||
if (arg == 9000 || arg == 9002)
|
||||
{
|
||||
SET_ERROR_INSERT_VALUE(9000);
|
||||
SET_ERROR_INSERT_VALUE(arg);
|
||||
for (Uint32 i = 1; i<signal->getLength(); i++)
|
||||
c_error_9000_nodes_mask.set(signal->theData[i]);
|
||||
}
|
||||
|
@ -1191,6 +1194,17 @@ Cmvmi::execDUMP_STATE_ORD(Signal* signal)
|
|||
#endif
|
||||
}//Cmvmi::execDUMP_STATE_ORD()
|
||||
|
||||
void
|
||||
Cmvmi::execNODE_START_REP(Signal* signal)
|
||||
{
|
||||
#ifdef ERROR_INSERT
|
||||
if (ERROR_INSERTED(9002) && signal->theData[0] == getOwnNodeId())
|
||||
{
|
||||
signal->theData[0] = 9001;
|
||||
execDUMP_STATE_ORD(signal);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
BLOCK_FUNCTIONS(Cmvmi)
|
||||
|
||||
|
|
|
@ -72,6 +72,7 @@ private:
|
|||
void handleSET_VAR_REQ(Signal* signal);
|
||||
|
||||
void execTESTSIG(Signal* signal);
|
||||
void execNODE_START_REP(Signal* signal);
|
||||
|
||||
char theErrorMessage[256];
|
||||
void sendSTTORRY(Signal* signal);
|
||||
|
|
|
@ -269,7 +269,7 @@ Dbdih::Dbdih(const class Configuration & config):
|
|||
|
||||
addRecSignal(GSN_DICT_LOCK_CONF, &Dbdih::execDICT_LOCK_CONF);
|
||||
addRecSignal(GSN_DICT_LOCK_REF, &Dbdih::execDICT_LOCK_REF);
|
||||
addRecSignal(GSN_NODE_START_REP, &Dbdih::execNODE_START_REP);
|
||||
addRecSignal(GSN_NODE_START_REP, &Dbdih::execNODE_START_REP, true);
|
||||
|
||||
apiConnectRecord = 0;
|
||||
connectRecord = 0;
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <Vector.hpp>
|
||||
#include <signaldata/DumpStateOrd.hpp>
|
||||
#include <Bitmask.hpp>
|
||||
#include <RefConvert.hpp>
|
||||
|
||||
int runLoadTable(NDBT_Context* ctx, NDBT_Step* step){
|
||||
|
||||
|
@ -919,6 +920,41 @@ int runBug20185(NDBT_Context* ctx, NDBT_Step* step){
|
|||
return NDBT_OK;
|
||||
}
|
||||
|
||||
int runBug24717(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());
|
||||
|
||||
int dump[] = { 9002, 0 } ;
|
||||
Uint32 ownNode = refToNode(pNdb->getReference());
|
||||
dump[1] = ownNode;
|
||||
|
||||
for (; loops; loops --)
|
||||
{
|
||||
int nodeId = restarter.getRandomNotMasterNodeId(rand());
|
||||
restarter.restartOneDbNode(nodeId, false, true, true);
|
||||
restarter.waitNodesNoStart(&nodeId, 1);
|
||||
|
||||
if (restarter.dumpStateOneNode(nodeId, dump, 2))
|
||||
return NDBT_FAILED;
|
||||
|
||||
restarter.startNodes(&nodeId, 1);
|
||||
|
||||
for (Uint32 i = 0; i < 100; i++)
|
||||
{
|
||||
hugoTrans.pkReadRecords(pNdb, 100, 1, NdbOperation::LM_CommittedRead);
|
||||
}
|
||||
|
||||
restarter.waitClusterStarted();
|
||||
}
|
||||
|
||||
return NDBT_OK;
|
||||
}
|
||||
|
||||
|
||||
NDBT_TESTSUITE(testNodeRestart);
|
||||
TESTCASE("NoLoad",
|
||||
|
@ -1232,6 +1268,9 @@ TESTCASE("Bug20185",
|
|||
STEP(runBug20185);
|
||||
FINALIZER(runClearTable);
|
||||
}
|
||||
TESTCASE("Bug24717", ""){
|
||||
INITIALIZER(runBug24717);
|
||||
}
|
||||
NDBT_TESTSUITE_END(testNodeRestart);
|
||||
|
||||
int main(int argc, const char** argv){
|
||||
|
|
|
@ -457,6 +457,10 @@ max-time: 1000
|
|||
cmd: testIndex
|
||||
args: -n Bug21384
|
||||
|
||||
max-time: 1000
|
||||
cmd: testNodeRestart
|
||||
args: -n Bug24717 T1
|
||||
|
||||
# OLD FLEX
|
||||
max-time: 500
|
||||
cmd: flexBench
|
||||
|
|
Loading…
Reference in a new issue