summaryrefslogtreecommitdiff
path: root/storage/ndb
diff options
context:
space:
mode:
authorunknown <jonas@perch.ndb.mysql.com>2008-01-11 09:31:55 +0100
committerunknown <jonas@perch.ndb.mysql.com>2008-01-11 09:31:55 +0100
commitb64f9dbe155e713c1f801b6ee4d114b09ce2b610 (patch)
tree4bf179442d9fb6dc675e2d062f175d17fc4cbaa0 /storage/ndb
parentd4045eedd818fd4b9ae93885091091e384fc5932 (diff)
parente984956385c6ee6370da97655bc217070558fbb1 (diff)
downloadmariadb-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/ndb')
-rw-r--r--storage/ndb/src/kernel/blocks/ERROR_codes.txt2
-rw-r--r--storage/ndb/src/kernel/blocks/suma/Suma.cpp16
-rw-r--r--storage/ndb/test/ndbapi/test_event.cpp61
-rw-r--r--storage/ndb/test/run-test/daily-basic-tests.txt4
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
+