From 7fa2b4ef4e1d00f43f339c38bd1e12fe91698b29 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 8 Sep 2004 06:26:44 +0200 Subject: [PATCH] BUG#ndb_blob on 1 node Make sure to flush buffer when sending long sig so that order is maintained --- ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp b/ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp index ea46ee94fdc..f179bbc926f 100644 --- a/ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp +++ b/ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp @@ -141,6 +141,8 @@ void Dbtup::sendReadAttrinfo(Signal* signal, const Uint32 type = getNodeInfo(nodeId).m_type; bool is_api = (type >= NodeInfo::API && type <= NodeInfo::REP); bool old_dest = (getNodeInfo(nodeId).m_version < MAKE_VERSION(3,5,0)); + Uint32 TpacketTA = hostBuffer[nodeId].noOfPacketsTA; + Uint32 TpacketLen = hostBuffer[nodeId].packetLenTA; if (ERROR_INSERTED(4006) && (nodeId != getOwnNodeId())){ // Use error insert to turn routing on @@ -169,6 +171,19 @@ void Dbtup::sendReadAttrinfo(Signal* signal, */ if(ToutBufIndex >= 22 && is_api && !old_dest) { ljam(); + /** + * Flush buffer so that order is maintained + */ + if (TpacketTA != 0) { + ljam(); + BlockReference TBref = numberToRef(API_PACKED, nodeId); + MEMCOPY_NO_WORDS(&signal->theData[0], + &hostBuffer[nodeId].packetBufferTA[0], + TpacketLen); + sendSignal(TBref, GSN_TRANSID_AI, signal, TpacketLen, JBB); + hostBuffer[nodeId].noOfPacketsTA = 0; + hostBuffer[nodeId].packetLenTA = 0; + }//if LinearSectionPtr ptr[3]; ptr[0].p = &signal->theData[25]; ptr[0].sz = ToutBufIndex;