diff --git a/ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp b/ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp index ea46ee94fdc5b7cb56fca087d8daa782a365a3c2..f179bbc926fa6ddbf8617d68d61f68e8d37763fe 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;