List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:November 4 2009 5:49pm
Subject:bzr commit into mysql-5.1-telco-7.0 branch (jonas:3193)
View as plain text  
#At file:///home/jonas/src/telco-6.4/ based on
revid:jonas@stripped

 3193 Jonas Oreland	2009-11-04 [merge]
      merge 63 to 70

    modified:
      storage/ndb/src/kernel/vm/SimulatedBlock.cpp
      storage/ndb/src/kernel/vm/SimulatedBlock.hpp
=== modified file 'storage/ndb/src/kernel/vm/SimulatedBlock.cpp'
--- a/storage/ndb/src/kernel/vm/SimulatedBlock.cpp	2009-10-20 19:45:04 +0000
+++ b/storage/ndb/src/kernel/vm/SimulatedBlock.cpp	2009-11-04 16:49:02 +0000
@@ -280,7 +280,7 @@ SimulatedBlock::signal_error(Uint32 gsn,
 
 extern class SectionSegmentPool g_sectionSegmentPool;
 
-#define check_sections(signal, cnt) if (unlikely(cnt))
handle_invalid_sections_in_send_signal(signal)
+#define check_sections(signal, cnt, cnt2) do { if (unlikely(cnt)) {
handle_invalid_sections_in_send_signal(signal); } else if (unlikely(cnt2 == 0 &&
signal->header.m_fragmentInfo != 0)) { handle_invalid_fragmentInfo(signal); } }
while(0)
 
 void
 SimulatedBlock::handle_invalid_sections_in_send_signal(Signal* signal) const
@@ -321,6 +321,19 @@ SimulatedBlock::handle_lingering_section
 #endif
 }
 
+void
+SimulatedBlock::handle_invalid_fragmentInfo(Signal* signal) const
+{
+#if defined VM_TRACE || defined ERROR_INSERT
+  ErrorReporter::handleError(NDBD_EXIT_BLOCK_BNR_ZERO,
+                             "Incorrect header->m_fragmentInfo in sendSignal()",
+                             "");
+#else
+  signal->header.m_fragmentInfo = 0;
+  infoEvent("Incorrect header->m_fragmentInfo in sendSignal");
+#endif
+}
+
 static void
 linkSegments(Uint32 head, Uint32 tail){
   
@@ -445,7 +458,7 @@ SimulatedBlock::sendSignal(BlockReferenc
   signal->header.theReceiversBlockNumber = recBlock;
   signal->header.m_noOfSections = 0;
 
-  check_sections(signal, noOfSections);
+  check_sections(signal, noOfSections, 0);
   
   Uint32 tSignalId = signal->header.theSignalId;
   
@@ -535,7 +548,7 @@ SimulatedBlock::sendSignal(NodeReceiverG
   signal->header.theSendersBlockRef = reference();
   signal->header.m_noOfSections = 0;
 
-  check_sections(signal, noOfSections);
+  check_sections(signal, noOfSections, 0);
 
   if ((length == 0) || (length > 25) || (recBlock == 0)) {
     signal_error(gsn, length, recBlock, __FILE__, __LINE__);
@@ -634,7 +647,7 @@ SimulatedBlock::sendSignal(BlockReferenc
   Uint32 recNode   = refToNode(ref);
   Uint32 ourProcessor         = globalData.ownId;
   
-  check_sections(signal, signal->header.m_noOfSections);
+  check_sections(signal, signal->header.m_noOfSections, noOfSections);
   
   signal->header.theLength = length;
   signal->header.theVerId_signalNumber = gsn;
@@ -743,7 +756,7 @@ SimulatedBlock::sendSignal(NodeReceiverG
   Uint32 ourProcessor = globalData.ownId;
   Uint32 recBlock = rg.m_block;
   
-  check_sections(signal, signal->header.m_noOfSections);
+  check_sections(signal, signal->header.m_noOfSections, noOfSections);
   
   signal->header.theLength = length;
   signal->header.theVerId_signalNumber = gsn;
@@ -862,7 +875,7 @@ SimulatedBlock::sendSignal(BlockReferenc
   Uint32 recNode   = refToNode(ref);
   Uint32 ourProcessor         = globalData.ownId;
 
-  check_sections(signal, signal->header.m_noOfSections);
+  check_sections(signal, signal->header.m_noOfSections, noOfSections);
 
   signal->header.theLength = length;
   signal->header.theVerId_signalNumber = gsn;
@@ -969,7 +982,7 @@ SimulatedBlock::sendSignal(NodeReceiverG
   Uint32 ourProcessor = globalData.ownId;
   Uint32 recBlock = rg.m_block;
 
-  check_sections(signal, signal->header.m_noOfSections);
+  check_sections(signal, signal->header.m_noOfSections, noOfSections);
 
   signal->header.theLength = length;
   signal->header.theVerId_signalNumber = gsn;
@@ -1102,7 +1115,7 @@ SimulatedBlock::sendSignalNoRelease(Bloc
   Uint32 recNode   = refToNode(ref);
   Uint32 ourProcessor         = globalData.ownId;
 
-  check_sections(signal, signal->header.m_noOfSections);
+  check_sections(signal, signal->header.m_noOfSections, noOfSections);
 
   signal->header.theLength = length;
   signal->header.theVerId_signalNumber = gsn;
@@ -1217,7 +1230,7 @@ SimulatedBlock::sendSignalNoRelease(Node
   Uint32 ourProcessor = globalData.ownId;
   Uint32 recBlock = rg.m_block;
 
-  check_sections(signal, signal->header.m_noOfSections);
+  check_sections(signal, signal->header.m_noOfSections, noOfSections);
 
   signal->header.theLength = length;
   signal->header.theVerId_signalNumber = gsn;
@@ -1338,7 +1351,7 @@ SimulatedBlock::sendSignalWithDelay(Bloc
   
   BlockNumber bnr = refToBlock(ref);
 
-  check_sections(signal, signal->header.m_noOfSections);
+  check_sections(signal, signal->header.m_noOfSections, 0);
   
   signal->header.theLength = length;
   signal->header.theSendersSignalId = signal->header.theSignalId;
@@ -1385,7 +1398,7 @@ SimulatedBlock::sendSignalWithDelay(Bloc
     bnr_error();
   }//if
 
-  check_sections(signal, signal->header.m_noOfSections);
+  check_sections(signal, signal->header.m_noOfSections, noOfSections);
 
   signal->header.theLength = length;
   signal->header.theSendersSignalId = signal->header.theSignalId;
@@ -2948,7 +2961,7 @@ SimulatedBlock::sendFirstFragment(Fragme
 				  Uint32 noOfSections,
 				  Uint32 messageSize){
   
-  check_sections(signal, signal->header.m_noOfSections);
+  check_sections(signal, signal->header.m_noOfSections, noOfSections);
   
   info.m_sectionPtr[0].m_linear.p = NULL;
   info.m_sectionPtr[1].m_linear.p = NULL;

=== modified file 'storage/ndb/src/kernel/vm/SimulatedBlock.hpp'
--- a/storage/ndb/src/kernel/vm/SimulatedBlock.hpp	2009-10-20 19:45:04 +0000
+++ b/storage/ndb/src/kernel/vm/SimulatedBlock.hpp	2009-11-04 16:49:02 +0000
@@ -328,6 +328,7 @@ protected:
   void handle_invalid_sections_in_send_signal(Signal*) const;
   void handle_lingering_sections_after_execute(Signal*) const;
   void handle_lingering_sections_after_execute(SectionHandle*) const;
+  void handle_invalid_fragmentInfo(Signal*) const;
 
   /**
    * Send routed signals (ONLY LOCALLY)


Attachment: [text/bzr-bundle] bzr/jonas@mysql.com-20091104164902-cs02vkzkavxw5ywo.bundle
Thread
bzr commit into mysql-5.1-telco-7.0 branch (jonas:3193)Jonas Oreland4 Nov 2009