List:Commits« Previous MessageNext Message »
From:jonas Date:May 21 2008 9:18am
Subject:bk commit into 5.1 tree (jonas:1.2598) BUG#36843
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-05-21 09:18:45+02:00, jonas@stripped +2 -0
  ndb - bug#36843 (telco-6.*)
    check connectivity also at start of SUB_START_REQ

  storage/ndb/src/kernel/blocks/suma/Suma.cpp@stripped, 2008-05-21 09:18:41+02:00,
jonas@stripped +26 -10
    check connectivity also at start of SUB_START_REQ

  storage/ndb/src/kernel/blocks/suma/Suma.hpp@stripped, 2008-05-21 09:18:41+02:00,
jonas@stripped +1 -1
    check connectivity also at start of SUB_START_REQ

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-04-25 10:19:42 +02:00
+++ b/storage/ndb/src/kernel/blocks/suma/Suma.cpp	2008-05-21 09:18:41 +02:00
@@ -2383,6 +2383,16 @@ Suma::execSUB_START_REQ(Signal* signal){
                     senderRef, senderData, SubStartRef::OutOfSubOpRecords);
     return;
   }
+
+  if (! check_sub_start(subscriberRef))
+  {
+    jam();
+    c_subscriberPool.release(subbPtr);
+    c_subOpPool.release(subOpPtr);
+    sendSubStartRef(signal,
+                    senderRef, senderData, SubStartRef::NodeDied);
+    return;
+  }
   
   // setup subscriber record
   subbPtr.p->m_senderRef  = subscriberRef;
@@ -2587,6 +2597,19 @@ Suma::execCREATE_TRIG_REF(Signal* signal
   drop_triggers(signal, subPtr);
 }
 
+bool
+Suma::check_sub_start(Uint32 subscriberRef)
+{
+  Uint32 nodeId = refToNode(subscriberRef);
+  bool startme = c_startup.m_restart_server_node_id;
+  bool handover = c_startup.m_wait_handover;
+  bool connected = 
+    c_failedApiNodes.get(nodeId) == false && 
+    c_connected_nodes.get(nodeId);
+  
+  return (startme || handover || connected);
+}
+
 void
 Suma::report_sub_start_conf(Signal* signal, Ptr<Subscription> subPtr)
 {
@@ -2607,13 +2630,8 @@ Suma::report_sub_start_conf(Signal* sign
       c_subscriberPool.getPtr(ptr, subOpPtr.p->m_subscriberRef);
 
       Uint32 nodeId = refToNode(ptr.p->m_senderRef);
-      bool startme = c_startup.m_restart_server_node_id;
-      bool handover = c_startup.m_wait_handover;
-      bool connected = 
-        c_failedApiNodes.get(nodeId) == false && 
-        c_connected_nodes.get(nodeId);
-
-      if (startme || handover || connected)
+      
+      if (check_sub_start(ptr.p->m_senderRef))
       {
         SubStartConf* conf = (SubStartConf*)signal->getDataPtrSend();
         conf->senderRef       = reference();
@@ -2640,9 +2658,7 @@ Suma::report_sub_start_conf(Signal* sign
       else
       {
         jam();
-        g_eventLogger->warning
-          ("Node %u failed in report_sub_start_conf(%u,%u,%u)",
-           nodeId, startme,handover,connected);
+        
         sendSubStartRef(signal,
                         senderRef, senderData, SubStartRef::NodeDied);
 
diff -Nrup a/storage/ndb/src/kernel/blocks/suma/Suma.hpp
b/storage/ndb/src/kernel/blocks/suma/Suma.hpp
--- a/storage/ndb/src/kernel/blocks/suma/Suma.hpp	2008-02-20 16:14:00 +01:00
+++ b/storage/ndb/src/kernel/blocks/suma/Suma.hpp	2008-05-21 09:18:41 +02:00
@@ -376,7 +376,6 @@ public:
 
   void completeSubRemove(SubscriptionPtr subPtr);
   
-
   void send_sub_start_stop_event(Signal *signal,
                                  Ptr<Subscriber> ptr,
                                  NdbDictionary::Event::_TableEvent event,
@@ -389,6 +388,7 @@ public:
   void drop_triggers(Signal*, Ptr<Subscription>);
   void drop_triggers_complete(Signal*, Ptr<Subscription>);
 
+  bool check_sub_start(Uint32 subscriberRef);
   void report_sub_start_conf(Signal* signal, Ptr<Subscription> subPtr);
   void report_sub_start_ref(Signal* signal, Ptr<Subscription> subPtr, Uint32);
 
Thread
bk commit into 5.1 tree (jonas:1.2598) BUG#36843jonas21 May 2008