#At file:///home/msvensson/mysql/7.0/ based on revid:jack@strippedo
3103 Magnus Blåudd 2009-10-09
Bug#44607 Ndb : Fragmented long signals need node failure handling code
- Fix compilation error caused by compiler that does not like anon union with anon struct
modified:
storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp
storage/ndb/src/kernel/vm/SimulatedBlock.cpp
=== modified file 'storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp'
--- a/storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp 2009-10-08 10:19:19 +0000
+++ b/storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp 2009-10-09 08:15:14 +0000
@@ -57,7 +57,7 @@ private:
Uint32 cursor;
Uint32 elementsCleaned;
Uint32 callbackStart; /* Callback structure placed here */
- };
+ } cleanup;
};
};
=== modified file 'storage/ndb/src/kernel/vm/SimulatedBlock.cpp'
--- a/storage/ndb/src/kernel/vm/SimulatedBlock.cpp 2009-10-08 11:15:24 +0000
+++ b/storage/ndb/src/kernel/vm/SimulatedBlock.cpp 2009-10-09 08:15:14 +0000
@@ -1853,13 +1853,13 @@ SimulatedBlock::execCONTINUE_FRAGMENTED(
callbackWords);
Callback cb;
- memcpy(&cb, &sig->callbackStart, callbackWords << 2);
+ memcpy(&cb, &sig->cleanup.callbackStart, callbackWords << 2);
doNodeFailureCleanup(signal,
- sig->failedNodeId,
- sig->resource,
- sig->cursor,
- sig->elementsCleaned,
+ sig->cleanup.failedNodeId,
+ sig->cleanup.resource,
+ sig->cleanup.cursor,
+ sig->cleanup.elementsCleaned,
cb);
break;
}
@@ -2503,15 +2503,15 @@ SimulatedBlock::doNodeFailureCleanup(Sig
ContinueFragmented * sig = (ContinueFragmented*)signal->getDataPtrSend();
sig->type = ContinueFragmented::CONTINUE_CLEANUP;
- sig->failedNodeId = failedNodeId;
- sig->resource = resource;
- sig->cursor = cursor;
- sig->elementsCleaned= elementsCleaned;
+ sig->cleanup.failedNodeId = failedNodeId;
+ sig->cleanup.resource = resource;
+ sig->cleanup.cursor = cursor;
+ sig->cleanup.elementsCleaned= elementsCleaned;
Uint32 callbackWords = (sizeof(Callback) + 3) >> 2;
Uint32 sigLen = ContinueFragmented::CONTINUE_CLEANUP_FIXED_WORDS +
callbackWords;
ndbassert(sigLen <= 25); // Should be STATIC_ASSERT
- memcpy(&sig->callbackStart, &cb, callbackWords << 2);
+ memcpy(&sig->cleanup.callbackStart, &cb, callbackWords << 2);
sendSignal(reference(), GSN_CONTINUE_FRAGMENTED, signal, sigLen, JBB);
Attachment: [text/bzr-bundle] bzr/magnus.blaudd@sun.com-20091009081514-69tmo3bexd98p3q1.bundle