List:Commits« Previous MessageNext Message »
From:jonas Date:January 4 2007 10:03am
Subject:bk commit into 5.1 tree (jonas:1.2359) BUG#25329
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, 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#25329jonas4 Jan