Loading ndb/src/kernel/blocks/dblqh/Dblqh.hpp +1 −0 Original line number Diff line number Diff line Loading @@ -232,6 +232,7 @@ #define ZSCAN_MARKERS 18 #define ZOPERATION_EVENT_REP 19 #define ZPREP_DROP_TABLE 20 #define ZENABLE_EXPAND_CHECK 21 /* ------------------------------------------------------------------------- */ /* NODE STATE DURING SYSTEM RESTART, VARIABLES CNODES_SR_STATE */ Loading ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +41 −13 Original line number Diff line number Diff line Loading @@ -434,6 +434,33 @@ void Dblqh::execCONTINUEB(Signal* signal) checkDropTab(signal); return; break; case ZENABLE_EXPAND_CHECK: { jam(); fragptr.i = signal->theData[1]; if (fragptr.i != RNIL) { jam(); ptrCheckGuard(fragptr, cfragrecFileSize, fragrecord); signal->theData[0] = fragptr.p->tabRef; signal->theData[1] = fragptr.p->fragId; sendSignal(DBACC_REF, GSN_EXPANDCHECK2, signal, 2, JBB); signal->theData[0] = ZENABLE_EXPAND_CHECK; signal->theData[1] = fragptr.p->nextFrag; sendSignal(DBLQH_REF, GSN_CONTINUEB, signal, 2, JBB); return; } else { jam(); StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend(); conf->startingNodeId = getOwnNodeId(); sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal, StartRecConf::SignalLength, JBB); return; } } default: ndbrequire(false); break; Loading Loading @@ -15503,20 +15530,21 @@ void Dblqh::srFourthComp(Signal* signal) } else if ((cstartType == NodeState::ST_NODE_RESTART) || (cstartType == NodeState::ST_SYSTEM_RESTART)) { jam(); if(cstartType == NodeState::ST_SYSTEM_RESTART) { jam(); signal->theData[0] = ZENABLE_EXPAND_CHECK; signal->theData[1] = c_redo_log_complete_frags; sendSignal(DBLQH_REF, GSN_CONTINUEB, signal, 2, JBB); } else { jam(); StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend(); conf->startingNodeId = getOwnNodeId(); sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal, StartRecConf::SignalLength, JBB); if(cstartType == NodeState::ST_SYSTEM_RESTART){ fragptr.i = c_redo_log_complete_frags; while(fragptr.i != RNIL){ ptrCheckGuard(fragptr, cfragrecFileSize, fragrecord); signal->theData[0] = fragptr.p->tabRef; signal->theData[1] = fragptr.p->fragId; sendSignal(DBACC_REF, GSN_EXPANDCHECK2, signal, 2, JBB); fragptr.i = fragptr.p->nextFrag; } } } else { ndbrequire(false); ndb/src/kernel/blocks/dbtc/DbtcMain.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -6978,6 +6978,18 @@ void Dbtc::checkScanActiveInFailedLqh(Signal* signal, found = true; } } ScanFragList deliv(c_scan_frag_pool, scanptr.p->m_delivered_scan_frags); for(deliv.first(ptr); !ptr.isNull(); deliv.next(ptr)) { jam(); if (refToNode(ptr.p->lqhBlockref) == failedNodeId) { jam(); found = true; break; } } } if(found){ jam(); Loading ndb/src/kernel/vm/RequestTracker.hpp +2 −2 Original line number Diff line number Diff line Loading @@ -26,12 +26,12 @@ public: void init() { m_confs.clear(); m_nRefs = 0; } template<typename SignalClass> void init(SafeCounterManager& mgr, bool init(SafeCounterManager& mgr, NodeReceiverGroup rg, Uint16 GSN, Uint32 senderData) { init(); SafeCounter tmp(mgr, m_sc); tmp.init<SignalClass>(rg, GSN, senderData); return tmp.init<SignalClass>(rg, GSN, senderData); } bool ignoreRef(SafeCounterManager& mgr, Uint32 nodeId) Loading ndb/src/kernel/vm/SafeCounter.hpp +14 −8 Original line number Diff line number Diff line Loading @@ -230,10 +230,13 @@ inline bool SafeCounter::init(NodeReceiverGroup rg, Uint16 GSN, Uint32 senderData){ bool b = init<Ref>(rg.m_block, GSN, senderData); if (init<Ref>(rg.m_block, GSN, senderData)) { m_nodes = rg.m_nodes; m_count = m_nodes.count(); return b; return true; } return false; } template<typename Ref> Loading @@ -241,10 +244,13 @@ inline bool SafeCounter::init(NodeReceiverGroup rg, Uint32 senderData){ bool b = init<Ref>(rg.m_block, Ref::GSN, senderData); if (init<Ref>(rg.m_block, Ref::GSN, senderData)) { m_nodes = rg.m_nodes; m_count = m_nodes.count(); return b; return true; } return false; } inline Loading Loading
ndb/src/kernel/blocks/dblqh/Dblqh.hpp +1 −0 Original line number Diff line number Diff line Loading @@ -232,6 +232,7 @@ #define ZSCAN_MARKERS 18 #define ZOPERATION_EVENT_REP 19 #define ZPREP_DROP_TABLE 20 #define ZENABLE_EXPAND_CHECK 21 /* ------------------------------------------------------------------------- */ /* NODE STATE DURING SYSTEM RESTART, VARIABLES CNODES_SR_STATE */ Loading
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +41 −13 Original line number Diff line number Diff line Loading @@ -434,6 +434,33 @@ void Dblqh::execCONTINUEB(Signal* signal) checkDropTab(signal); return; break; case ZENABLE_EXPAND_CHECK: { jam(); fragptr.i = signal->theData[1]; if (fragptr.i != RNIL) { jam(); ptrCheckGuard(fragptr, cfragrecFileSize, fragrecord); signal->theData[0] = fragptr.p->tabRef; signal->theData[1] = fragptr.p->fragId; sendSignal(DBACC_REF, GSN_EXPANDCHECK2, signal, 2, JBB); signal->theData[0] = ZENABLE_EXPAND_CHECK; signal->theData[1] = fragptr.p->nextFrag; sendSignal(DBLQH_REF, GSN_CONTINUEB, signal, 2, JBB); return; } else { jam(); StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend(); conf->startingNodeId = getOwnNodeId(); sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal, StartRecConf::SignalLength, JBB); return; } } default: ndbrequire(false); break; Loading Loading @@ -15503,20 +15530,21 @@ void Dblqh::srFourthComp(Signal* signal) } else if ((cstartType == NodeState::ST_NODE_RESTART) || (cstartType == NodeState::ST_SYSTEM_RESTART)) { jam(); if(cstartType == NodeState::ST_SYSTEM_RESTART) { jam(); signal->theData[0] = ZENABLE_EXPAND_CHECK; signal->theData[1] = c_redo_log_complete_frags; sendSignal(DBLQH_REF, GSN_CONTINUEB, signal, 2, JBB); } else { jam(); StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend(); conf->startingNodeId = getOwnNodeId(); sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal, StartRecConf::SignalLength, JBB); if(cstartType == NodeState::ST_SYSTEM_RESTART){ fragptr.i = c_redo_log_complete_frags; while(fragptr.i != RNIL){ ptrCheckGuard(fragptr, cfragrecFileSize, fragrecord); signal->theData[0] = fragptr.p->tabRef; signal->theData[1] = fragptr.p->fragId; sendSignal(DBACC_REF, GSN_EXPANDCHECK2, signal, 2, JBB); fragptr.i = fragptr.p->nextFrag; } } } else { ndbrequire(false);
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -6978,6 +6978,18 @@ void Dbtc::checkScanActiveInFailedLqh(Signal* signal, found = true; } } ScanFragList deliv(c_scan_frag_pool, scanptr.p->m_delivered_scan_frags); for(deliv.first(ptr); !ptr.isNull(); deliv.next(ptr)) { jam(); if (refToNode(ptr.p->lqhBlockref) == failedNodeId) { jam(); found = true; break; } } } if(found){ jam(); Loading
ndb/src/kernel/vm/RequestTracker.hpp +2 −2 Original line number Diff line number Diff line Loading @@ -26,12 +26,12 @@ public: void init() { m_confs.clear(); m_nRefs = 0; } template<typename SignalClass> void init(SafeCounterManager& mgr, bool init(SafeCounterManager& mgr, NodeReceiverGroup rg, Uint16 GSN, Uint32 senderData) { init(); SafeCounter tmp(mgr, m_sc); tmp.init<SignalClass>(rg, GSN, senderData); return tmp.init<SignalClass>(rg, GSN, senderData); } bool ignoreRef(SafeCounterManager& mgr, Uint32 nodeId) Loading
ndb/src/kernel/vm/SafeCounter.hpp +14 −8 Original line number Diff line number Diff line Loading @@ -230,10 +230,13 @@ inline bool SafeCounter::init(NodeReceiverGroup rg, Uint16 GSN, Uint32 senderData){ bool b = init<Ref>(rg.m_block, GSN, senderData); if (init<Ref>(rg.m_block, GSN, senderData)) { m_nodes = rg.m_nodes; m_count = m_nodes.count(); return b; return true; } return false; } template<typename Ref> Loading @@ -241,10 +244,13 @@ inline bool SafeCounter::init(NodeReceiverGroup rg, Uint32 senderData){ bool b = init<Ref>(rg.m_block, Ref::GSN, senderData); if (init<Ref>(rg.m_block, Ref::GSN, senderData)) { m_nodes = rg.m_nodes; m_count = m_nodes.count(); return b; return true; } return false; } inline Loading