List:Commits« Previous MessageNext Message »
From:jonas Date:February 20 2008 12:55pm
Subject:bk commit into 5.1 tree (jonas:1.2540)
View as plain text  
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)jonas20 Feb