Commit 61c5b80e authored by unknown's avatar unknown
Browse files

ndb -

  add testcase for bug#24717
 + fix typo


ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
  Add new error insert 9002
    which is 9000, but will auto enable when started
ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp:
  Add new error insert 9002
    which is 9000, but will auto enable when started
ndb/src/kernel/blocks/dbdih/DbdihInit.cpp:
  Fix typo
ndb/test/ndbapi/testNodeRestart.cpp:
  add testcase for bug#24717
ndb/test/run-test/daily-basic-tests.txt:
  add testcase for bug#24717
parent cc00d542
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -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)

+2 −1
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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;  
+39 −0
Original line number Diff line number Diff line
@@ -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){
+4 −0
Original line number Diff line number Diff line
@@ -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