Loading ndb/include/kernel/signaldata/TcContinueB.hpp +2 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,8 @@ private: CHECK_WAIT_DROP_TAB_FAILED_LQH = 16, TRIGGER_PENDING = 17, DelayTCKEYCONF = 18 DelayTCKEYCONF = 18, ZNF_CHECK_TRANSACTIONS = 19 }; }; Loading ndb/src/kernel/blocks/dbdih/Dbdih.hpp +2 −1 Original line number Diff line number Diff line Loading @@ -1038,7 +1038,8 @@ private: void prepareReplicas(FragmentstorePtr regFragptr); void removeNodeFromStored(Uint32 nodeId, FragmentstorePtr regFragptr, ReplicaRecordPtr replicaPtr); ReplicaRecordPtr replicaPtr, bool temporary); void removeOldStoredReplica(FragmentstorePtr regFragptr, ReplicaRecordPtr replicaPtr); void removeStoredReplica(FragmentstorePtr regFragptr, Loading ndb/src/kernel/blocks/dbdih/DbdihMain.cpp +13 −3 Original line number Diff line number Diff line Loading @@ -5212,6 +5212,7 @@ void Dbdih::removeNodeFromTable(Signal* signal, //const Uint32 lcpId = SYSFILE->latestLCP_ID; const bool lcpOngoingFlag = (tabPtr.p->tabLcpStatus== TabRecord::TLS_ACTIVE); const bool temporary = !tabPtr.p->storedTable; FragmentstorePtr fragPtr; for(Uint32 fragNo = 0; fragNo < tabPtr.p->totalfragments; fragNo++){ Loading @@ -5232,7 +5233,7 @@ void Dbdih::removeNodeFromTable(Signal* signal, jam(); found = true; noOfRemovedReplicas++; removeNodeFromStored(nodeId, fragPtr, replicaPtr); removeNodeFromStored(nodeId, fragPtr, replicaPtr, temporary); if(replicaPtr.p->lcpOngoingFlag){ jam(); /** Loading Loading @@ -12051,9 +12052,18 @@ void Dbdih::removeDeadNode(NodeRecordPtr removeNodePtr) /*---------------------------------------------------------------*/ void Dbdih::removeNodeFromStored(Uint32 nodeId, FragmentstorePtr fragPtr, ReplicaRecordPtr replicatePtr) ReplicaRecordPtr replicatePtr, bool temporary) { if (!temporary) { jam(); newCrashedReplica(nodeId, replicatePtr); } else { jam(); } removeStoredReplica(fragPtr, replicatePtr); linkOldStoredReplica(fragPtr, replicatePtr); ndbrequire(fragPtr.p->storedReplicas != RNIL); Loading ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +166 −0 Original line number Diff line number Diff line Loading @@ -18449,6 +18449,172 @@ Dblqh::execDUMP_STATE_ORD(Signal* signal) SET_ERROR_INSERT_VALUE(5042); } TcConnectionrec *regTcConnectionrec = tcConnectionrec; Uint32 ttcConnectrecFileSize = ctcConnectrecFileSize; Uint32 arg = dumpState->args[0]; if(arg == 2306) { for(Uint32 i = 0; i<1024; i++) { TcConnectionrecPtr tcRec; tcRec.i = ctransidHash[i]; while(tcRec.i != RNIL) { ptrCheckGuard(tcRec, ttcConnectrecFileSize, regTcConnectionrec); ndbout << "TcConnectionrec " << tcRec.i; signal->theData[0] = 2307; signal->theData[1] = tcRec.i; execDUMP_STATE_ORD(signal); tcRec.i = tcRec.p->nextHashRec; } } } if(arg == 2307 || arg == 2308) { TcConnectionrecPtr tcRec; tcRec.i = signal->theData[1]; ptrCheckGuard(tcRec, ttcConnectrecFileSize, regTcConnectionrec); ndbout << " transactionState = " << tcRec.p->transactionState<<endl; ndbout << " operation = " << tcRec.p->operation<<endl; ndbout << " tcNodeFailrec = " << tcRec.p->tcNodeFailrec << " seqNoReplica = " << tcRec.p->seqNoReplica << " simpleRead = " << tcRec.p->simpleRead << endl; ndbout << " replicaType = " << tcRec.p->replicaType << " reclenAiLqhkey = " << tcRec.p->reclenAiLqhkey << " opExec = " << tcRec.p->opExec << endl; ndbout << " opSimple = " << tcRec.p->opSimple << " nextSeqNoReplica = " << tcRec.p->nextSeqNoReplica << " lockType = " << tcRec.p->lockType << endl; ndbout << " lastReplicaNo = " << tcRec.p->lastReplicaNo << " indTakeOver = " << tcRec.p->indTakeOver << " dirtyOp = " << tcRec.p->dirtyOp << endl; ndbout << " activeCreat = " << tcRec.p->activeCreat << " tcBlockref = " << hex << tcRec.p->tcBlockref << " reqBlockref = " << hex << tcRec.p->reqBlockref << " primKeyLen = " << tcRec.p->primKeyLen << endl; ndbout << " nextReplica = " << tcRec.p->nextReplica << " tcBlockref = " << hex << tcRec.p->tcBlockref << " reqBlockref = " << hex << tcRec.p->reqBlockref << " primKeyLen = " << tcRec.p->primKeyLen << endl; ndbout << " logStopPageNo = " << tcRec.p->logStopPageNo << " logStartPageNo = " << tcRec.p->logStartPageNo << " logStartPageIndex = " << tcRec.p->logStartPageIndex << endl; ndbout << " errorCode = " << tcRec.p->errorCode << " clientBlockref = " << hex << tcRec.p->clientBlockref << " applRef = " << hex << tcRec.p->applRef << " totSendlenAi = " << tcRec.p->totSendlenAi << endl; ndbout << " totReclenAi = " << tcRec.p->totReclenAi << " tcScanRec = " << tcRec.p->tcScanRec << " tcScanInfo = " << tcRec.p->tcScanInfo << " tcOprec = " << hex << tcRec.p->tcOprec << endl; ndbout << " tableref = " << tcRec.p->tableref << " simpleTcConnect = " << tcRec.p->simpleTcConnect << " storedProcId = " << tcRec.p->storedProcId << " schemaVersion = " << tcRec.p->schemaVersion << endl; ndbout << " reqinfo = " << tcRec.p->reqinfo << " reqRef = " << tcRec.p->reqRef << " readlenAi = " << tcRec.p->readlenAi << " prevTc = " << tcRec.p->prevTc << endl; ndbout << " prevLogTcrec = " << tcRec.p->prevLogTcrec << " prevHashRec = " << tcRec.p->prevHashRec << " nodeAfterNext0 = " << tcRec.p->nodeAfterNext[0] << " nodeAfterNext1 = " << tcRec.p->nodeAfterNext[1] << endl; ndbout << " nextTcConnectrec = " << tcRec.p->nextTcConnectrec << " nextTc = " << tcRec.p->nextTc << " nextTcLogQueue = " << tcRec.p->nextTcLogQueue << " nextLogTcrec = " << tcRec.p->nextLogTcrec << endl; ndbout << " nextHashRec = " << tcRec.p->nextHashRec << " logWriteState = " << tcRec.p->logWriteState << " logStartFileNo = " << tcRec.p->logStartFileNo << " listState = " << tcRec.p->listState << endl; ndbout << " lastAttrinbuf = " << tcRec.p->lastAttrinbuf << " lastTupkeybuf = " << tcRec.p->lastTupkeybuf << " hashValue = " << tcRec.p->hashValue << endl; ndbout << " gci = " << tcRec.p->gci << " fragmentptr = " << tcRec.p->fragmentptr << " fragmentid = " << tcRec.p->fragmentid << " firstTupkeybuf = " << tcRec.p->firstTupkeybuf << endl; ndbout << " firstAttrinbuf = " << tcRec.p->firstAttrinbuf << " currTupAiLen = " << tcRec.p->currTupAiLen << " currReclenAi = " << tcRec.p->currReclenAi << endl; ndbout << " tcTimer = " << tcRec.p->tcTimer << " clientConnectrec = " << tcRec.p->clientConnectrec << " applOprec = " << hex << tcRec.p->applOprec << " abortState = " << tcRec.p->abortState << endl; ndbout << " transid0 = " << hex << tcRec.p->transid[0] << " transid1 = " << hex << tcRec.p->transid[1] << " tupkeyData0 = " << tcRec.p->tupkeyData[0] << " tupkeyData1 = " << tcRec.p->tupkeyData[1] << endl; ndbout << " tupkeyData2 = " << tcRec.p->tupkeyData[2] << " tupkeyData3 = " << tcRec.p->tupkeyData[3] << endl; switch (tcRec.p->transactionState) { case TcConnectionrec::SCAN_STATE_USED: if (tcRec.p->tcScanRec < cscanrecFileSize){ ScanRecordPtr TscanPtr; c_scanRecordPool.getPtr(TscanPtr, tcRec.p->tcScanRec); ndbout << " scanState = " << TscanPtr.p->scanState << endl; //TscanPtr.p->scanLocalref[2]; ndbout << " copyPtr="<<TscanPtr.p->copyPtr << " scanAccPtr="<<TscanPtr.p->scanAccPtr << " scanAiLength="<<TscanPtr.p->scanAiLength << endl; ndbout << " m_curr_batch_size_rows="<< TscanPtr.p->m_curr_batch_size_rows << " m_max_batch_size_rows="<< TscanPtr.p->m_max_batch_size_rows << " scanErrorCounter="<<TscanPtr.p->scanErrorCounter << endl; ndbout << " scanSchemaVersion="<<TscanPtr.p->scanSchemaVersion << " scanStoredProcId="<<TscanPtr.p->scanStoredProcId << " scanTcrec="<<TscanPtr.p->scanTcrec << endl; ndbout << " scanType="<<TscanPtr.p->scanType << " scanApiBlockref="<<TscanPtr.p->scanApiBlockref << " scanNodeId="<<TscanPtr.p->scanNodeId << " scanCompletedStatus="<<TscanPtr.p->scanCompletedStatus << endl; ndbout << " scanFlag="<<TscanPtr.p->scanFlag << " scanLockHold="<<TscanPtr.p->scanLockHold << " scanLockMode="<<TscanPtr.p->scanLockMode << " scanNumber="<<TscanPtr.p->scanNumber << endl; ndbout << " scanReleaseCounter="<<TscanPtr.p->scanReleaseCounter << " scanTcWaiting="<<TscanPtr.p->scanTcWaiting << " scanKeyinfoFlag="<<TscanPtr.p->scanKeyinfoFlag << endl; } else{ ndbout << "No connected scan record found" << endl; } break; default: break; } ndbrequire(arg != 2308); } }//Dblqh::execDUMP_STATE_ORD() void Dblqh::execSET_VAR_REQ(Signal* signal) ndb/src/kernel/blocks/dbtc/Dbtc.hpp +17 −10 Original line number Diff line number Diff line Loading @@ -211,14 +211,6 @@ public: LTS_ACTIVE = 1 }; enum TakeOverState { TOS_NOT_DEFINED = 0, TOS_IDLE = 1, TOS_ACTIVE = 2, TOS_COMPLETED = 3, TOS_NODE_FAILED = 4 }; enum FailState { FS_IDLE = 0, FS_LISTENING = 1, Loading Loading @@ -636,6 +628,7 @@ public: ConnectionState apiConnectstate; UintR transid[2]; UintR firstTcConnect; NdbNodeBitmask m_transaction_nodes; //--------------------------------------------------- // Second 16 byte cache line. Hot variables. Loading Loading @@ -932,7 +925,6 @@ public: struct HostRecord { HostState hostStatus; LqhTransState lqhTransStatus; TakeOverState takeOverStatus; bool inPackedList; UintR noOfPackedWordsLqh; UintR packedWordsLqh[26]; Loading @@ -941,6 +933,17 @@ public: UintR noOfWordsTCINDXCONF; UintR packedWordsTCINDXCONF[30]; BlockReference hostLqhBlockRef; enum NodeFailBits { NF_TAKEOVER = 0x1, NF_CHECK_SCAN = 0x2, NF_CHECK_TRANSACTION = 0x4, NF_CHECK_DROP_TAB = 0x8, NF_NODE_FAIL_BITS = 0xF // All bits... }; Uint32 m_nf_bits; NdbNodeBitmask m_lqh_trans_conf; }; /* p2c: size = 128 bytes */ typedef Ptr<HostRecord> HostRecordPtr; Loading Loading @@ -1578,7 +1581,7 @@ private: void wrongSchemaVersionErrorLab(Signal* signal); void noFreeConnectionErrorLab(Signal* signal); void tckeyreq050Lab(Signal* signal); void timeOutFoundLab(Signal* signal, UintR anAdd); void timeOutFoundLab(Signal* signal, UintR anAdd, Uint32 errCode); void completeTransAtTakeOverLab(Signal* signal, UintR TtakeOverInd); void completeTransAtTakeOverDoLast(Signal* signal, UintR TtakeOverInd); void completeTransAtTakeOverDoOne(Signal* signal, UintR TtakeOverInd); Loading @@ -1600,6 +1603,9 @@ private: void checkScanFragList(Signal*, Uint32 failedNodeId, ScanRecord * scanP, LocalDLList<ScanFragRec>::Head&); void nodeFailCheckTransactions(Signal*,Uint32 transPtrI,Uint32 failedNodeId); void checkNodeFailComplete(Signal* signal, Uint32 failedNodeId, Uint32 bit); // Initialisation void initData(); void initRecords(); Loading @@ -1626,6 +1632,7 @@ private: HostRecord *hostRecord; HostRecordPtr hostptr; UintR chostFilesize; NdbNodeBitmask c_alive_nodes; GcpRecord *gcpRecord; GcpRecordPtr gcpPtr; Loading Loading
ndb/include/kernel/signaldata/TcContinueB.hpp +2 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,8 @@ private: CHECK_WAIT_DROP_TAB_FAILED_LQH = 16, TRIGGER_PENDING = 17, DelayTCKEYCONF = 18 DelayTCKEYCONF = 18, ZNF_CHECK_TRANSACTIONS = 19 }; }; Loading
ndb/src/kernel/blocks/dbdih/Dbdih.hpp +2 −1 Original line number Diff line number Diff line Loading @@ -1038,7 +1038,8 @@ private: void prepareReplicas(FragmentstorePtr regFragptr); void removeNodeFromStored(Uint32 nodeId, FragmentstorePtr regFragptr, ReplicaRecordPtr replicaPtr); ReplicaRecordPtr replicaPtr, bool temporary); void removeOldStoredReplica(FragmentstorePtr regFragptr, ReplicaRecordPtr replicaPtr); void removeStoredReplica(FragmentstorePtr regFragptr, Loading
ndb/src/kernel/blocks/dbdih/DbdihMain.cpp +13 −3 Original line number Diff line number Diff line Loading @@ -5212,6 +5212,7 @@ void Dbdih::removeNodeFromTable(Signal* signal, //const Uint32 lcpId = SYSFILE->latestLCP_ID; const bool lcpOngoingFlag = (tabPtr.p->tabLcpStatus== TabRecord::TLS_ACTIVE); const bool temporary = !tabPtr.p->storedTable; FragmentstorePtr fragPtr; for(Uint32 fragNo = 0; fragNo < tabPtr.p->totalfragments; fragNo++){ Loading @@ -5232,7 +5233,7 @@ void Dbdih::removeNodeFromTable(Signal* signal, jam(); found = true; noOfRemovedReplicas++; removeNodeFromStored(nodeId, fragPtr, replicaPtr); removeNodeFromStored(nodeId, fragPtr, replicaPtr, temporary); if(replicaPtr.p->lcpOngoingFlag){ jam(); /** Loading Loading @@ -12051,9 +12052,18 @@ void Dbdih::removeDeadNode(NodeRecordPtr removeNodePtr) /*---------------------------------------------------------------*/ void Dbdih::removeNodeFromStored(Uint32 nodeId, FragmentstorePtr fragPtr, ReplicaRecordPtr replicatePtr) ReplicaRecordPtr replicatePtr, bool temporary) { if (!temporary) { jam(); newCrashedReplica(nodeId, replicatePtr); } else { jam(); } removeStoredReplica(fragPtr, replicatePtr); linkOldStoredReplica(fragPtr, replicatePtr); ndbrequire(fragPtr.p->storedReplicas != RNIL); Loading
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +166 −0 Original line number Diff line number Diff line Loading @@ -18449,6 +18449,172 @@ Dblqh::execDUMP_STATE_ORD(Signal* signal) SET_ERROR_INSERT_VALUE(5042); } TcConnectionrec *regTcConnectionrec = tcConnectionrec; Uint32 ttcConnectrecFileSize = ctcConnectrecFileSize; Uint32 arg = dumpState->args[0]; if(arg == 2306) { for(Uint32 i = 0; i<1024; i++) { TcConnectionrecPtr tcRec; tcRec.i = ctransidHash[i]; while(tcRec.i != RNIL) { ptrCheckGuard(tcRec, ttcConnectrecFileSize, regTcConnectionrec); ndbout << "TcConnectionrec " << tcRec.i; signal->theData[0] = 2307; signal->theData[1] = tcRec.i; execDUMP_STATE_ORD(signal); tcRec.i = tcRec.p->nextHashRec; } } } if(arg == 2307 || arg == 2308) { TcConnectionrecPtr tcRec; tcRec.i = signal->theData[1]; ptrCheckGuard(tcRec, ttcConnectrecFileSize, regTcConnectionrec); ndbout << " transactionState = " << tcRec.p->transactionState<<endl; ndbout << " operation = " << tcRec.p->operation<<endl; ndbout << " tcNodeFailrec = " << tcRec.p->tcNodeFailrec << " seqNoReplica = " << tcRec.p->seqNoReplica << " simpleRead = " << tcRec.p->simpleRead << endl; ndbout << " replicaType = " << tcRec.p->replicaType << " reclenAiLqhkey = " << tcRec.p->reclenAiLqhkey << " opExec = " << tcRec.p->opExec << endl; ndbout << " opSimple = " << tcRec.p->opSimple << " nextSeqNoReplica = " << tcRec.p->nextSeqNoReplica << " lockType = " << tcRec.p->lockType << endl; ndbout << " lastReplicaNo = " << tcRec.p->lastReplicaNo << " indTakeOver = " << tcRec.p->indTakeOver << " dirtyOp = " << tcRec.p->dirtyOp << endl; ndbout << " activeCreat = " << tcRec.p->activeCreat << " tcBlockref = " << hex << tcRec.p->tcBlockref << " reqBlockref = " << hex << tcRec.p->reqBlockref << " primKeyLen = " << tcRec.p->primKeyLen << endl; ndbout << " nextReplica = " << tcRec.p->nextReplica << " tcBlockref = " << hex << tcRec.p->tcBlockref << " reqBlockref = " << hex << tcRec.p->reqBlockref << " primKeyLen = " << tcRec.p->primKeyLen << endl; ndbout << " logStopPageNo = " << tcRec.p->logStopPageNo << " logStartPageNo = " << tcRec.p->logStartPageNo << " logStartPageIndex = " << tcRec.p->logStartPageIndex << endl; ndbout << " errorCode = " << tcRec.p->errorCode << " clientBlockref = " << hex << tcRec.p->clientBlockref << " applRef = " << hex << tcRec.p->applRef << " totSendlenAi = " << tcRec.p->totSendlenAi << endl; ndbout << " totReclenAi = " << tcRec.p->totReclenAi << " tcScanRec = " << tcRec.p->tcScanRec << " tcScanInfo = " << tcRec.p->tcScanInfo << " tcOprec = " << hex << tcRec.p->tcOprec << endl; ndbout << " tableref = " << tcRec.p->tableref << " simpleTcConnect = " << tcRec.p->simpleTcConnect << " storedProcId = " << tcRec.p->storedProcId << " schemaVersion = " << tcRec.p->schemaVersion << endl; ndbout << " reqinfo = " << tcRec.p->reqinfo << " reqRef = " << tcRec.p->reqRef << " readlenAi = " << tcRec.p->readlenAi << " prevTc = " << tcRec.p->prevTc << endl; ndbout << " prevLogTcrec = " << tcRec.p->prevLogTcrec << " prevHashRec = " << tcRec.p->prevHashRec << " nodeAfterNext0 = " << tcRec.p->nodeAfterNext[0] << " nodeAfterNext1 = " << tcRec.p->nodeAfterNext[1] << endl; ndbout << " nextTcConnectrec = " << tcRec.p->nextTcConnectrec << " nextTc = " << tcRec.p->nextTc << " nextTcLogQueue = " << tcRec.p->nextTcLogQueue << " nextLogTcrec = " << tcRec.p->nextLogTcrec << endl; ndbout << " nextHashRec = " << tcRec.p->nextHashRec << " logWriteState = " << tcRec.p->logWriteState << " logStartFileNo = " << tcRec.p->logStartFileNo << " listState = " << tcRec.p->listState << endl; ndbout << " lastAttrinbuf = " << tcRec.p->lastAttrinbuf << " lastTupkeybuf = " << tcRec.p->lastTupkeybuf << " hashValue = " << tcRec.p->hashValue << endl; ndbout << " gci = " << tcRec.p->gci << " fragmentptr = " << tcRec.p->fragmentptr << " fragmentid = " << tcRec.p->fragmentid << " firstTupkeybuf = " << tcRec.p->firstTupkeybuf << endl; ndbout << " firstAttrinbuf = " << tcRec.p->firstAttrinbuf << " currTupAiLen = " << tcRec.p->currTupAiLen << " currReclenAi = " << tcRec.p->currReclenAi << endl; ndbout << " tcTimer = " << tcRec.p->tcTimer << " clientConnectrec = " << tcRec.p->clientConnectrec << " applOprec = " << hex << tcRec.p->applOprec << " abortState = " << tcRec.p->abortState << endl; ndbout << " transid0 = " << hex << tcRec.p->transid[0] << " transid1 = " << hex << tcRec.p->transid[1] << " tupkeyData0 = " << tcRec.p->tupkeyData[0] << " tupkeyData1 = " << tcRec.p->tupkeyData[1] << endl; ndbout << " tupkeyData2 = " << tcRec.p->tupkeyData[2] << " tupkeyData3 = " << tcRec.p->tupkeyData[3] << endl; switch (tcRec.p->transactionState) { case TcConnectionrec::SCAN_STATE_USED: if (tcRec.p->tcScanRec < cscanrecFileSize){ ScanRecordPtr TscanPtr; c_scanRecordPool.getPtr(TscanPtr, tcRec.p->tcScanRec); ndbout << " scanState = " << TscanPtr.p->scanState << endl; //TscanPtr.p->scanLocalref[2]; ndbout << " copyPtr="<<TscanPtr.p->copyPtr << " scanAccPtr="<<TscanPtr.p->scanAccPtr << " scanAiLength="<<TscanPtr.p->scanAiLength << endl; ndbout << " m_curr_batch_size_rows="<< TscanPtr.p->m_curr_batch_size_rows << " m_max_batch_size_rows="<< TscanPtr.p->m_max_batch_size_rows << " scanErrorCounter="<<TscanPtr.p->scanErrorCounter << endl; ndbout << " scanSchemaVersion="<<TscanPtr.p->scanSchemaVersion << " scanStoredProcId="<<TscanPtr.p->scanStoredProcId << " scanTcrec="<<TscanPtr.p->scanTcrec << endl; ndbout << " scanType="<<TscanPtr.p->scanType << " scanApiBlockref="<<TscanPtr.p->scanApiBlockref << " scanNodeId="<<TscanPtr.p->scanNodeId << " scanCompletedStatus="<<TscanPtr.p->scanCompletedStatus << endl; ndbout << " scanFlag="<<TscanPtr.p->scanFlag << " scanLockHold="<<TscanPtr.p->scanLockHold << " scanLockMode="<<TscanPtr.p->scanLockMode << " scanNumber="<<TscanPtr.p->scanNumber << endl; ndbout << " scanReleaseCounter="<<TscanPtr.p->scanReleaseCounter << " scanTcWaiting="<<TscanPtr.p->scanTcWaiting << " scanKeyinfoFlag="<<TscanPtr.p->scanKeyinfoFlag << endl; } else{ ndbout << "No connected scan record found" << endl; } break; default: break; } ndbrequire(arg != 2308); } }//Dblqh::execDUMP_STATE_ORD() void Dblqh::execSET_VAR_REQ(Signal* signal)
ndb/src/kernel/blocks/dbtc/Dbtc.hpp +17 −10 Original line number Diff line number Diff line Loading @@ -211,14 +211,6 @@ public: LTS_ACTIVE = 1 }; enum TakeOverState { TOS_NOT_DEFINED = 0, TOS_IDLE = 1, TOS_ACTIVE = 2, TOS_COMPLETED = 3, TOS_NODE_FAILED = 4 }; enum FailState { FS_IDLE = 0, FS_LISTENING = 1, Loading Loading @@ -636,6 +628,7 @@ public: ConnectionState apiConnectstate; UintR transid[2]; UintR firstTcConnect; NdbNodeBitmask m_transaction_nodes; //--------------------------------------------------- // Second 16 byte cache line. Hot variables. Loading Loading @@ -932,7 +925,6 @@ public: struct HostRecord { HostState hostStatus; LqhTransState lqhTransStatus; TakeOverState takeOverStatus; bool inPackedList; UintR noOfPackedWordsLqh; UintR packedWordsLqh[26]; Loading @@ -941,6 +933,17 @@ public: UintR noOfWordsTCINDXCONF; UintR packedWordsTCINDXCONF[30]; BlockReference hostLqhBlockRef; enum NodeFailBits { NF_TAKEOVER = 0x1, NF_CHECK_SCAN = 0x2, NF_CHECK_TRANSACTION = 0x4, NF_CHECK_DROP_TAB = 0x8, NF_NODE_FAIL_BITS = 0xF // All bits... }; Uint32 m_nf_bits; NdbNodeBitmask m_lqh_trans_conf; }; /* p2c: size = 128 bytes */ typedef Ptr<HostRecord> HostRecordPtr; Loading Loading @@ -1578,7 +1581,7 @@ private: void wrongSchemaVersionErrorLab(Signal* signal); void noFreeConnectionErrorLab(Signal* signal); void tckeyreq050Lab(Signal* signal); void timeOutFoundLab(Signal* signal, UintR anAdd); void timeOutFoundLab(Signal* signal, UintR anAdd, Uint32 errCode); void completeTransAtTakeOverLab(Signal* signal, UintR TtakeOverInd); void completeTransAtTakeOverDoLast(Signal* signal, UintR TtakeOverInd); void completeTransAtTakeOverDoOne(Signal* signal, UintR TtakeOverInd); Loading @@ -1600,6 +1603,9 @@ private: void checkScanFragList(Signal*, Uint32 failedNodeId, ScanRecord * scanP, LocalDLList<ScanFragRec>::Head&); void nodeFailCheckTransactions(Signal*,Uint32 transPtrI,Uint32 failedNodeId); void checkNodeFailComplete(Signal* signal, Uint32 failedNodeId, Uint32 bit); // Initialisation void initData(); void initRecords(); Loading @@ -1626,6 +1632,7 @@ private: HostRecord *hostRecord; HostRecordPtr hostptr; UintR chostFilesize; NdbNodeBitmask c_alive_nodes; GcpRecord *gcpRecord; GcpRecordPtr gcpPtr; Loading