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 Oreland | 4 Nov 2009 |