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, 2008-02-20 12:55:37+01:00, jonas@stripped +2 -0
SUMA v2, 62->63 post merge fixes
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp@stripped, 2008-02-20 12:55:35+01:00,
jonas@stripped +42 -9
SUMA v2, 62->63 post merge fixes
storage/ndb/src/kernel/blocks/suma/Suma.cpp@stripped, 2008-02-20 12:55:35+01:00,
jonas@stripped +4 -3
SUMA v2, 62->63 post merge fixes
diff -Nrup a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
--- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2008-02-20 10:57:56 +01:00
+++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2008-02-20 12:55:35 +01:00
@@ -14149,22 +14149,47 @@ Dbdict::execDICT_LOCK_REQ(Signal* signal
const DictLockReq req = *(DictLockReq*)&signal->theData[0];
UtilLockReq lockReq;
- lockReq.senderRef = req->userRef;
- lockReq.senderData = req->userPtr;
+ lockReq.senderRef = req.userRef;
+ lockReq.senderData = req.userPtr;
lockReq.lockId = 0;
lockReq.requestInfo = 0;
- lockReq.extra = req->lockType;
+ lockReq.extra = req.lockType;
- const DictLockType* lt = getDictLockType(req->lockType);
+ const DictLockType* lt = getDictLockType(req.lockType);
- if (req->lockType == DictLockReq::NodeRestartLock)
+ Uint32 err;
+ if (req.lockType == DictLockReq::SumaStartMe)
+ {
+ jam();
+
+ if (c_outstanding_sub_startstop)
+ {
+ jam();
+ g_eventLogger.info("refing dict lock to %u", refToNode(req.userRef));
+ err = DictLockRef::TooManyRequests;
+ goto ref;
+ }
+
+ c_sub_startstop_lock.set(refToNode(req.userRef));
+
+ g_eventLogger.info("granting dict lock to %u", refToNode(req.userRef));
+ DictLockConf* conf = (DictLockConf*)signal->getDataPtrSend();
+ conf->userPtr = req.userPtr;
+ conf->lockType = req.lockType;
+ conf->lockPtr = 0;
+ sendSignal(req.userRef, GSN_DICT_LOCK_CONF, signal,
+ DictLockConf::SignalLength, JBB);
+ return;
+ }
+
+ if (req.lockType == DictLockReq::NodeRestartLock)
{
jam();
lockReq.requestInfo |= UtilLockReq::SharedLock;
}
// make sure bad request crashes slave, not master (us)
- Uint32 err, res;
+ Uint32 res;
if (getOwnNodeId() != c_masterNodeId)
{
jam();
@@ -14179,15 +14204,15 @@ Dbdict::execDICT_LOCK_REQ(Signal* signal
goto ref;
}
- if (req->userRef != signal->getSendersBlockRef() ||
- getNodeInfo(refToNode(req->userRef)).m_type != NodeInfo::DB)
+ if (req.userRef != signal->getSendersBlockRef() ||
+ getNodeInfo(refToNode(req.userRef)).m_type != NodeInfo::DB)
{
jam();
err = DictLockRef::BadUserRef;
goto ref;
}
- if (c_aliveNodes.get(refToNode(req->userRef)))
+ if (c_aliveNodes.get(refToNode(req.userRef)))
{
jam();
err = DictLockRef::TooLate;
@@ -14254,6 +14279,14 @@ Dbdict::execDICT_UNLOCK_ORD(Signal* sign
jam();
req.userPtr = ord->lockPtr;
req.userRef = signal->getSendersBlockRef();
+ }
+
+ if (ord->lockType == DictLockReq::SumaStartMe)
+ {
+ jam();
+ g_eventLogger.info("clearing dict lock for %u", refToNode(ord->senderRef));
+ c_sub_startstop_lock.clear(refToNode(ord->senderRef));
+ return;
}
UtilLockReq lockReq;
diff -Nrup a/storage/ndb/src/kernel/blocks/suma/Suma.cpp
b/storage/ndb/src/kernel/blocks/suma/Suma.cpp
--- a/storage/ndb/src/kernel/blocks/suma/Suma.cpp 2008-02-20 10:25:09 +01:00
+++ b/storage/ndb/src/kernel/blocks/suma/Suma.cpp 2008-02-20 12:55:35 +01:00
@@ -500,7 +500,7 @@ Suma::execSUMA_START_ME_CONF(Signal* sig
ord->senderData = 0;
ord->senderRef = reference();
sendSignal(calcDictBlockRef(c_masterNodeId),
- GSN_DICT_UNLOCK_ORD, signal, DictUnlockOrd::SignalLengthSuma, JBB);
+ GSN_DICT_UNLOCK_ORD, signal, DictUnlockOrd::SignalLength, JBB);
}
c_startup.m_restart_server_node_id= 0;
}
@@ -570,17 +570,18 @@ Suma::execREAD_NODESCONF(Signal* signal)
c_masterNodeId = conf->masterNodeId;
- c_startup.m_restart_server_node_id = 0;
getNodeGroupMembers(signal);
if (m_typeOfStart == NodeState::ST_NODE_RESTART ||
m_typeOfStart == NodeState::ST_INITIAL_NODE_RESTART)
{
jam();
- send_start_me_req(signal);
+ send_dict_lock_req(signal);
+
return;
}
+ c_startup.m_restart_server_node_id = 0;
sendSTTORRY(signal);
}
| Thread |
|---|
| • bk commit into 5.1 tree (jonas:1.2540) | jonas | 20 Feb |