|  |  | @ -963,12 +963,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; | 
			
		
	
	
		
			
				
					|  |  | @ -2075,6 +2125,9 @@ TESTCASE("Bug28023", ""){ | 
			
		
	
		
			
				
					|  |  |  | TESTCASE("Bug28717", ""){ | 
			
		
	
		
			
				
					|  |  |  |   INITIALIZER(runBug28717); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | TESTCASE("Bug29364", ""){ | 
			
		
	
		
			
				
					|  |  |  |   INITIALIZER(runBug29364); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | NDBT_TESTSUITE_END(testNodeRestart); | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | int main(int argc, const char** argv){ | 
			
		
	
	
		
			
				
					|  |  | 
 |