Loading storage/ndb/src/kernel/blocks/ERROR_codes.txt +1 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ Next CMVMI 9000 Next BACKUP 10038 Next DBUTIL 11002 Next DBTUX 12008 Next SUMA 13034 Next SUMA 13036 TESTING NODE FAILURE, ARBITRATION --------------------------------- Loading storage/ndb/src/kernel/blocks/suma/Suma.cpp +15 −1 Original line number Diff line number Diff line Loading @@ -4852,6 +4852,21 @@ Suma::release_gci(Signal* signal, Uint32 buck, Uint32 gci) if(gci >= head.m_max_gci) { jam(); if (ERROR_INSERTED(13034)) { jam(); SET_ERROR_INSERT_VALUE(13035); return; } if (ERROR_INSERTED(13035)) { CLEAR_ERROR_INSERT_VALUE; NodeReceiverGroup rg(CMVMI, c_nodes_in_nodegroup_mask); rg.m_nodes.clear(getOwnNodeId()); signal->theData[0] = 9999; sendSignal(rg, GSN_NDB_TAMPER, signal, 1, JBA); return; } head.m_page_pos = 0; head.m_max_gci = gci; head.m_last_gci = 0; Loading Loading @@ -4923,7 +4938,6 @@ Suma::start_resend(Signal* signal, Uint32 buck) if(min > max) { ndbrequire(pos.m_page_pos <= 2); ndbrequire(pos.m_page_id == bucket->m_buffer_tail); m_active_buckets.set(buck); m_gcp_complete_rep_count ++; Loading storage/ndb/test/ndbapi/test_event.cpp +61 −0 Original line number Diff line number Diff line Loading @@ -1838,6 +1838,61 @@ runBug31701(NDBT_Context* ctx, NDBT_Step* step) return NDBT_OK; } int runBug33793(NDBT_Context* ctx, NDBT_Step* step) { int result = NDBT_OK; int loops = ctx->getNumLoops(); NdbRestarter restarter; if (restarter.getNumDbNodes() < 2){ ctx->stopTest(); return NDBT_OK; } // This should really wait for applier to start...10s is likely enough NdbSleep_SecSleep(10); while (loops-- && ctx->isTestStopped() == false) { int nodeId = restarter.getDbNodeId(rand() % restarter.getNumDbNodes()); int nodecount = 0; int nodes[255]; printf("nodeid: %u : victims: ", nodeId); for (int i = 0; i<restarter.getNumDbNodes(); i++) { int id = restarter.getDbNodeId(i); if (id == nodeId) continue; if (restarter.getNodeGroup(id) == restarter.getNodeGroup(nodeId)) { nodes[nodecount++] = id; printf("%u ", id); int val2[] = { DumpStateOrd::CmvmiSetRestartOnErrorInsert, 1 }; if (restarter.dumpStateOneNode(id, val2, 2)) return NDBT_FAILED; } } printf("\n"); fflush(stdout); restarter.insertErrorInNode(nodeId, 13034); if (restarter.waitNodesNoStart(nodes, nodecount)) return NDBT_FAILED; if (restarter.startNodes(nodes, nodecount)) return NDBT_FAILED; if (restarter.waitClusterStarted()) return NDBT_FAILED; } ctx->stopTest(); return NDBT_OK; } NDBT_TESTSUITE(test_event); TESTCASE("BasicEventOperation", "Verify that we can listen to Events" Loading Loading @@ -1975,6 +2030,12 @@ TESTCASE("Bug31701", ""){ FINALIZER(runDropEvent); FINALIZER(runDropShadowTable); } TESTCASE("Bug33793", ""){ INITIALIZER(runCreateEvent); STEP(runEventListenerUntilStopped); STEP(runBug33793); FINALIZER(runDropEvent); } NDBT_TESTSUITE_END(test_event); int main(int argc, const char** argv){ Loading storage/ndb/test/run-test/daily-basic-tests.txt +4 −0 Original line number Diff line number Diff line Loading @@ -942,3 +942,7 @@ max-time: 300 cmd: test_event args: -n Bug31701 T1 max-time: 300 cmd: test_event args: -n Bug33793 T1 Loading
storage/ndb/src/kernel/blocks/ERROR_codes.txt +1 −1 Original line number Diff line number Diff line Loading @@ -11,7 +11,7 @@ Next CMVMI 9000 Next BACKUP 10038 Next DBUTIL 11002 Next DBTUX 12008 Next SUMA 13034 Next SUMA 13036 TESTING NODE FAILURE, ARBITRATION --------------------------------- Loading
storage/ndb/src/kernel/blocks/suma/Suma.cpp +15 −1 Original line number Diff line number Diff line Loading @@ -4852,6 +4852,21 @@ Suma::release_gci(Signal* signal, Uint32 buck, Uint32 gci) if(gci >= head.m_max_gci) { jam(); if (ERROR_INSERTED(13034)) { jam(); SET_ERROR_INSERT_VALUE(13035); return; } if (ERROR_INSERTED(13035)) { CLEAR_ERROR_INSERT_VALUE; NodeReceiverGroup rg(CMVMI, c_nodes_in_nodegroup_mask); rg.m_nodes.clear(getOwnNodeId()); signal->theData[0] = 9999; sendSignal(rg, GSN_NDB_TAMPER, signal, 1, JBA); return; } head.m_page_pos = 0; head.m_max_gci = gci; head.m_last_gci = 0; Loading Loading @@ -4923,7 +4938,6 @@ Suma::start_resend(Signal* signal, Uint32 buck) if(min > max) { ndbrequire(pos.m_page_pos <= 2); ndbrequire(pos.m_page_id == bucket->m_buffer_tail); m_active_buckets.set(buck); m_gcp_complete_rep_count ++; Loading
storage/ndb/test/ndbapi/test_event.cpp +61 −0 Original line number Diff line number Diff line Loading @@ -1838,6 +1838,61 @@ runBug31701(NDBT_Context* ctx, NDBT_Step* step) return NDBT_OK; } int runBug33793(NDBT_Context* ctx, NDBT_Step* step) { int result = NDBT_OK; int loops = ctx->getNumLoops(); NdbRestarter restarter; if (restarter.getNumDbNodes() < 2){ ctx->stopTest(); return NDBT_OK; } // This should really wait for applier to start...10s is likely enough NdbSleep_SecSleep(10); while (loops-- && ctx->isTestStopped() == false) { int nodeId = restarter.getDbNodeId(rand() % restarter.getNumDbNodes()); int nodecount = 0; int nodes[255]; printf("nodeid: %u : victims: ", nodeId); for (int i = 0; i<restarter.getNumDbNodes(); i++) { int id = restarter.getDbNodeId(i); if (id == nodeId) continue; if (restarter.getNodeGroup(id) == restarter.getNodeGroup(nodeId)) { nodes[nodecount++] = id; printf("%u ", id); int val2[] = { DumpStateOrd::CmvmiSetRestartOnErrorInsert, 1 }; if (restarter.dumpStateOneNode(id, val2, 2)) return NDBT_FAILED; } } printf("\n"); fflush(stdout); restarter.insertErrorInNode(nodeId, 13034); if (restarter.waitNodesNoStart(nodes, nodecount)) return NDBT_FAILED; if (restarter.startNodes(nodes, nodecount)) return NDBT_FAILED; if (restarter.waitClusterStarted()) return NDBT_FAILED; } ctx->stopTest(); return NDBT_OK; } NDBT_TESTSUITE(test_event); TESTCASE("BasicEventOperation", "Verify that we can listen to Events" Loading Loading @@ -1975,6 +2030,12 @@ TESTCASE("Bug31701", ""){ FINALIZER(runDropEvent); FINALIZER(runDropShadowTable); } TESTCASE("Bug33793", ""){ INITIALIZER(runCreateEvent); STEP(runEventListenerUntilStopped); STEP(runBug33793); FINALIZER(runDropEvent); } NDBT_TESTSUITE_END(test_event); int main(int argc, const char** argv){ Loading
storage/ndb/test/run-test/daily-basic-tests.txt +4 −0 Original line number Diff line number Diff line Loading @@ -942,3 +942,7 @@ max-time: 300 cmd: test_event args: -n Bug31701 T1 max-time: 300 cmd: test_event args: -n Bug33793 T1