From: Date: May 21 2008 9:18am Subject: bk commit into 5.1 tree (jonas:1.2598) BUG#36843 List-Archive: http://lists.mysql.com/commits/46907 X-Bug: 36843 Message-Id: <20080521071849.7BCB84E27B@perch.localdomain> 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 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 ptr, NdbDictionary::Event::_TableEvent event, @@ -389,6 +388,7 @@ public: void drop_triggers(Signal*, Ptr); void drop_triggers_complete(Signal*, Ptr); + bool check_sub_start(Uint32 subscriberRef); void report_sub_start_conf(Signal* signal, Ptr subPtr); void report_sub_start_ref(Signal* signal, Ptr subPtr, Uint32);