List:Commits« Previous MessageNext Message »
From:Jonas Oreland Date:November 4 2009 5:49pm
Subject:bzr push into mysql-5.1-telco-7.0 branch (jonas:3191 to 3193)
View as plain text  
 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
 3192 Jonas Oreland	2009-11-04 [merge]
      ndb - merge 7.0.9a

    modified:
      storage/ndb/src/kernel/blocks/backup/Backup.cpp
 3191 Jonas Oreland	2009-11-04
      ndb - bug#48517 - fix proper error message when failing to commit schema trans
during initial start

    modified:
      storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp
=== modified file 'storage/ndb/src/kernel/blocks/backup/Backup.cpp'
--- a/storage/ndb/src/kernel/blocks/backup/Backup.cpp	2009-10-08 11:15:24 +0000
+++ b/storage/ndb/src/kernel/blocks/backup/Backup.cpp	2009-11-04 16:49:02 +0000
@@ -3163,6 +3163,7 @@ Backup::execLIST_TABLES_CONF(Signal* sig
   c_backupPool.getPtr(ptr, conf->senderData);
 
   SectionHandle handle (this, signal);
+  signal->header.m_fragmentInfo = 0;
   if (noOfTables > 0)
   {
     ListTablesData ltd;

=== 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 push into mysql-5.1-telco-7.0 branch (jonas:3191 to 3193)Jonas Oreland4 Nov 2009