diff options
author | unknown <jonas@perch.ndb.mysql.com> | 2008-01-11 09:31:55 +0100 |
---|---|---|
committer | unknown <jonas@perch.ndb.mysql.com> | 2008-01-11 09:31:55 +0100 |
commit | b64f9dbe155e713c1f801b6ee4d114b09ce2b610 (patch) | |
tree | 4bf179442d9fb6dc675e2d062f175d17fc4cbaa0 /storage | |
parent | d4045eedd818fd4b9ae93885091091e384fc5932 (diff) | |
parent | e984956385c6ee6370da97655bc217070558fbb1 (diff) | |
download | mariadb-git-b64f9dbe155e713c1f801b6ee4d114b09ce2b610.tar.gz |
Merge perch.ndb.mysql.com:/home/jonas/src/51-telco-gca
into perch.ndb.mysql.com:/home/jonas/src/51-ndb
storage/ndb/src/kernel/blocks/ERROR_codes.txt:
Auto merged
storage/ndb/src/kernel/blocks/suma/Suma.cpp:
Auto merged
storage/ndb/test/run-test/daily-basic-tests.txt:
merge
Diffstat (limited to 'storage')
-rw-r--r-- | storage/ndb/src/kernel/blocks/ERROR_codes.txt | 2 | ||||
-rw-r--r-- | storage/ndb/src/kernel/blocks/suma/Suma.cpp | 16 | ||||
-rw-r--r-- | storage/ndb/test/ndbapi/test_event.cpp | 61 | ||||
-rw-r--r-- | storage/ndb/test/run-test/daily-basic-tests.txt | 4 |
4 files changed, 81 insertions, 2 deletions
diff --git a/storage/ndb/src/kernel/blocks/ERROR_codes.txt b/storage/ndb/src/kernel/blocks/ERROR_codes.txt index 72791cb0ebc..ba40779bf3d 100644 --- a/storage/ndb/src/kernel/blocks/ERROR_codes.txt +++ b/storage/ndb/src/kernel/blocks/ERROR_codes.txt @@ -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 --------------------------------- diff --git a/storage/ndb/src/kernel/blocks/suma/Suma.cpp b/storage/ndb/src/kernel/blocks/suma/Suma.cpp index 113b63a19d3..5f0510cf43a 100644 --- a/storage/ndb/src/kernel/blocks/suma/Suma.cpp +++ b/storage/ndb/src/kernel/blocks/suma/Suma.cpp @@ -4908,6 +4908,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; @@ -4979,7 +4994,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 ++; diff --git a/storage/ndb/test/ndbapi/test_event.cpp b/storage/ndb/test/ndbapi/test_event.cpp index 18825d734a4..a7504166065 100644 --- a/storage/ndb/test/ndbapi/test_event.cpp +++ b/storage/ndb/test/ndbapi/test_event.cpp @@ -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" @@ -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){ diff --git a/storage/ndb/test/run-test/daily-basic-tests.txt b/storage/ndb/test/run-test/daily-basic-tests.txt index 37db5e01dd6..1aee1555f00 100644 --- a/storage/ndb/test/run-test/daily-basic-tests.txt +++ b/storage/ndb/test/run-test/daily-basic-tests.txt @@ -1046,3 +1046,7 @@ max-time: 300 cmd: testSystemRestart args: -n Bug22696 T1 +max-time: 300 +cmd: test_event +args: -n Bug33793 T1 + |