Below is the list of changes that have just been committed into a local
5.1 repository of jonas. When jonas does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-01-04 10:03:11+01:00, jonas@stripped +4 -0
ndb - bug#25329
Fix most obvious error in dict/suma error handling of events
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp@stripped, 2007-01-04 10:03:09+01:00,
jonas@stripped +10 -0
Fix most obvious error in dict/suma error handling of events
storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp@stripped, 2007-01-04 10:03:09+01:00,
jonas@stripped +5 -0
Fix most obvious error in dict/suma error handling of events
storage/ndb/src/kernel/blocks/suma/Suma.cpp@stripped, 2007-01-04 10:03:09+01:00,
jonas@stripped +45 -14
Fix most obvious error in dict/suma error handling of events
storage/ndb/src/kernel/blocks/suma/SumaInit.cpp@stripped, 2007-01-04 10:03:09+01:00,
jonas@stripped +2 -0
Fix most obvious error in dict/suma error handling of events
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: jonas
# Host: perch.ndb.mysql.com
# Root: /home/jonas/src/51-work
--- 1.110/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2007-01-04 10:03:16 +01:00
+++ 1.111/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2007-01-04 10:03:16 +01:00
@@ -10151,6 +10151,7 @@
SubStartRef* ref = (SubStartRef*) signal->getDataPtrSend();
ref->senderRef = reference();
ref->senderData = subbPtr.p->m_senderData;
+ ref->errorCode = err;
sendSignal(subbPtr.p->m_senderRef, GSN_SUB_START_REF,
signal, SubStartRef::SignalLength2, JBB);
c_opSubEvent.release(subbPtr);
@@ -10213,6 +10214,7 @@
#ifdef EVENT_PH3_DEBUG
ndbout_c("DBDICT(Coordinator) got GSN_SUB_START_CONF = (%d)", subbPtr.i);
#endif
+ subbPtr.p->m_sub_start_conf = *conf;
subbPtr.p->m_reqTracker.reportConf(c_counterMgr, refToNode(senderRef));
completeSubStartReq(signal,subbPtr.i,0);
}
@@ -10252,6 +10254,9 @@
#ifdef EVENT_DEBUG
ndbout_c("SUB_START_CONF");
#endif
+
+ SubStartConf* conf = (SubStartConf*)signal->getDataPtrSend();
+ * conf = subbPtr.p->m_sub_start_conf;
sendSignal(subbPtr.p->m_senderRef, GSN_SUB_START_CONF,
signal, SubStartConf::SignalLength, JBB);
c_opSubEvent.release(subbPtr);
@@ -10373,6 +10378,7 @@
SubStopRef* ref = (SubStopRef*) signal->getDataPtrSend();
ref->senderRef = reference();
ref->senderData = subbPtr.p->m_senderData;
+ ref->errorCode = err;
sendSignal(subbPtr.p->m_senderRef, GSN_SUB_STOP_REF,
signal, SubStopRef::SignalLength, JBB);
c_opSubEvent.release(subbPtr);
@@ -10425,6 +10431,7 @@
* Coordinator
*/
ndbrequire(refToBlock(senderRef) == DBDICT);
+ subbPtr.p->m_sub_stop_conf = *conf;
subbPtr.p->m_reqTracker.reportConf(c_counterMgr, refToNode(senderRef));
completeSubStopReq(signal,subbPtr.i,0);
}
@@ -10465,6 +10472,8 @@
#ifdef EVENT_DEBUG
ndbout_c("SUB_STOP_CONF");
#endif
+ SubStopConf* conf = (SubStopConf*)signal->getDataPtrSend();
+ * conf = subbPtr.p->m_sub_stop_conf;
sendSignal(subbPtr.p->m_senderRef, GSN_SUB_STOP_CONF,
signal, SubStopConf::SignalLength, JBB);
c_opSubEvent.release(subbPtr);
@@ -10713,6 +10722,7 @@
SubRemoveRef* ref = (SubRemoveRef*) signal->getDataPtrSend();
ref->senderRef = reference();
ref->senderData = subbPtr.p->m_senderData;
+ ref->errorCode = err;
sendSignal(subbPtr.p->m_senderRef, GSN_SUB_REMOVE_REF,
signal, SubRemoveRef::SignalLength, JBB);
}
--- 1.44/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp 2007-01-04 10:03:16 +01:00
+++ 1.45/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp 2007-01-04 10:03:16 +01:00
@@ -52,6 +52,7 @@
#include <signaldata/DropTrig.hpp>
#include <signaldata/AlterTrig.hpp>
#include <signaldata/DictLock.hpp>
+#include <signaldata/SumaImpl.hpp>
#include "SchemaFile.hpp"
#include <blocks/mutexes.hpp>
#include <SafeCounter.hpp>
@@ -1632,6 +1633,10 @@
Uint32 m_senderRef;
Uint32 m_senderData;
Uint32 m_errorCode;
+ union {
+ SubStartConf m_sub_start_conf;
+ SubStopConf m_sub_stop_conf;
+ };
RequestTracker m_reqTracker;
};
typedef Ptr<OpSubEvent> OpSubEventPtr;
--- 1.49/storage/ndb/src/kernel/blocks/suma/Suma.cpp 2007-01-04 10:03:16 +01:00
+++ 1.50/storage/ndb/src/kernel/blocks/suma/Suma.cpp 2007-01-04 10:03:16 +01:00
@@ -230,7 +230,6 @@
c_startup.m_wait_handover= false;
c_failedApiNodes.clear();
- c_startup.m_restart_server_node_id = 0; // Server for my NR
ReadConfigConf * conf = (ReadConfigConf*)signal->getDataPtrSend();
conf->senderRef = reference();
@@ -261,6 +260,14 @@
if(startphase == 5)
{
+ if (ERROR_INSERTED(13029)) /* Hold startphase 5 */
+ {
+ sendSignalWithDelay(SUMA_REF, GSN_STTOR, signal,
+ 30, signal->getLength());
+ DBUG_VOID_RETURN;
+ }
+
+ c_startup.m_restart_server_node_id = 0;
getNodeGroupMembers(signal);
if (typeOfStart == NodeState::ST_NODE_RESTART ||
typeOfStart == NodeState::ST_INITIAL_NODE_RESTART)
@@ -373,6 +380,8 @@
infoEvent("Suma: node %d refused %d",
c_startup.m_restart_server_node_id, ref->errorCode);
+
+ c_startup.m_restart_server_node_id++;
send_start_me_req(signal);
}
@@ -887,6 +896,22 @@
ptr->m_buffer_head.m_page_id);
}
}
+
+ if (tCase == 8006)
+ {
+ SET_ERROR_INSERT_VALUE(13029);
+ }
+
+ if (tCase == 8007)
+ {
+ c_startup.m_restart_server_node_id = MAX_NDB_NODES + 1;
+ SET_ERROR_INSERT_VALUE(13029);
+ }
+
+ if (tCase == 8008)
+ {
+ CLEAR_ERROR_INSERT_VALUE;
+ }
}
/*************************************************************
@@ -1092,14 +1117,14 @@
}
} else {
if (c_startup.m_restart_server_node_id &&
- refToNode(subRef) != c_startup.m_restart_server_node_id)
+ subRef != calcSumaBlockRef(c_startup.m_restart_server_node_id))
{
/**
* only allow "restart_server" Suma's to come through
* for restart purposes
*/
jam();
- sendSubStartRef(signal, 1405);
+ sendSubCreateRef(signal, 1415);
DBUG_VOID_RETURN;
}
// Check that id/key is unique
@@ -2232,14 +2257,17 @@
key.m_subscriptionKey = req->subscriptionKey;
if (c_startup.m_restart_server_node_id &&
- refToNode(senderRef) != c_startup.m_restart_server_node_id)
+ senderRef != calcSumaBlockRef(c_startup.m_restart_server_node_id))
{
/**
* only allow "restart_server" Suma's to come through
* for restart purposes
*/
jam();
- sendSubStartRef(signal, 1405);
+ Uint32 err = c_startup.m_restart_server_node_id != RNIL ? 1405 :
+ SubStartRef::NF_FakeErrorREF;
+
+ sendSubStartRef(signal, err);
DBUG_VOID_RETURN;
}
@@ -2454,25 +2482,28 @@
DBUG_VOID_RETURN;
}
- if(!c_subscriptions.find(subPtr, key)){
- jam();
- DBUG_PRINT("error", ("not found"));
- sendSubStopRef(signal, 1407);
- DBUG_VOID_RETURN;
- }
-
if (c_startup.m_restart_server_node_id &&
- refToNode(senderRef) != c_startup.m_restart_server_node_id)
+ senderRef != calcSumaBlockRef(c_startup.m_restart_server_node_id))
{
/**
* only allow "restart_server" Suma's to come through
* for restart purposes
*/
jam();
- sendSubStopRef(signal, 1405);
+ Uint32 err = c_startup.m_restart_server_node_id != RNIL ? 1405 :
+ SubStopRef::NF_FakeErrorREF;
+
+ sendSubStopRef(signal, err);
DBUG_VOID_RETURN;
}
+ if(!c_subscriptions.find(subPtr, key)){
+ jam();
+ DBUG_PRINT("error", ("not found"));
+ sendSubStopRef(signal, 1407);
+ DBUG_VOID_RETURN;
+ }
+
if (subPtr.p->m_state == Subscription::LOCKED) {
jam();
DBUG_PRINT("error", ("locked"));
--- 1.14/storage/ndb/src/kernel/blocks/suma/SumaInit.cpp 2007-01-04 10:03:16 +01:00
+++ 1.15/storage/ndb/src/kernel/blocks/suma/SumaInit.cpp 2007-01-04 10:03:16 +01:00
@@ -122,6 +122,8 @@
addRecSignal(GSN_SUB_GCP_COMPLETE_REP,
&Suma::execSUB_GCP_COMPLETE_REP);
+
+ c_startup.m_restart_server_node_id = RNIL; // Server for my NR
}
Suma::~Suma()
| Thread |
|---|
| • bk commit into 5.1 tree (jonas:1.2359) BUG#25329 | jonas | 4 Jan |