diff -Nru a/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp b/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp --- a/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp 2006-06-30 13:33:03 +02:00 +++ b/storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp 2006-06-30 13:33:03 +02:00 @@ -238,6 +238,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 */ diff -Nru a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp --- a/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp 2006-06-30 13:33:03 +02:00 +++ b/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp 2006-06-30 13:33:03 +02:00 @@ -416,6 +416,35 @@ checkDropTab(signal); return; break; + case ZENABLE_EXPAND_CHECK: + { + jam(); + fragptr.i = signal->theData[1]; + if (fragptr.i != RNIL) + { + jam(); + c_redo_complete_fragments.getPtr(fragptr); + signal->theData[0] = fragptr.p->tabRef; + signal->theData[1] = fragptr.p->fragId; + sendSignal(DBACC_REF, GSN_EXPANDCHECK2, signal, 2, JBB); + + c_redo_complete_fragments.next(fragptr); + signal->theData[0] = ZENABLE_EXPAND_CHECK; + signal->theData[1] = fragptr.i; + sendSignal(DBLQH_REF, GSN_CONTINUEB, signal, 2, JBB); + return; + } + else + { + jam(); + c_redo_complete_fragments.remove(); + StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend(); + conf->startingNodeId = getOwnNodeId(); + sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal, + StartRecConf::SignalLength, JBB); + return; + } + } default: ndbrequire(false); break; @@ -15658,24 +15687,23 @@ } else if ((cstartType == NodeState::ST_NODE_RESTART) || (cstartType == NodeState::ST_SYSTEM_RESTART)) { jam(); - - + if(cstartType == NodeState::ST_SYSTEM_RESTART) + { + jam(); + if (c_redo_complete_fragments.first(fragptr)) + { + jam(); + signal->theData[0] = ZENABLE_EXPAND_CHECK; + signal->theData[1] = fragptr.i; + sendSignal(DBLQH_REF, GSN_CONTINUEB, signal, 2, JBB); + return; + } + } StartRecConf * conf = (StartRecConf*)signal->getDataPtrSend(); conf->startingNodeId = getOwnNodeId(); sendSignal(cmasterDihBlockref, GSN_START_RECCONF, signal, - StartRecConf::SignalLength, JBB); - - if(cstartType == NodeState::ST_SYSTEM_RESTART){ - c_redo_complete_fragments.first(fragptr); - while(fragptr.i != RNIL){ - signal->theData[0] = fragptr.p->tabRef; - signal->theData[1] = fragptr.p->fragId; - sendSignal(DBACC_REF, GSN_EXPANDCHECK2, signal, 2, JBB); - c_redo_complete_fragments.next(fragptr); - } - c_redo_complete_fragments.remove(); - } + StartRecConf::SignalLength, JBB); } else { ndbrequire(false); }//if