diff options
author | unknown <mronstrom@mysql.com> | 2004-08-05 20:16:45 +0200 |
---|---|---|
committer | unknown <mronstrom@mysql.com> | 2004-08-05 20:16:45 +0200 |
commit | a2b6166e0d8e0782318d8c258234013163ae133e (patch) | |
tree | 137edcf989b6c5d532be1bf0e72ca9a1ae4aa933 /ndb | |
parent | cdca651f6dd2c5628bb4470b3b13368a2c8db8e1 (diff) | |
download | mariadb-git-a2b6166e0d8e0782318d8c258234013163ae133e.tar.gz |
Fix for BUG #4096
Introduced refresh of watch dog at various places and
removed init of memory in allocRecord
Also changed default watch to 6 seconds
Diffstat (limited to 'ndb')
-rw-r--r-- | ndb/src/common/mgmcommon/ConfigInfo.cpp | 2 | ||||
-rw-r--r-- | ndb/src/kernel/blocks/dbacc/DbaccMain.cpp | 7 | ||||
-rw-r--r-- | ndb/src/kernel/blocks/dbdict/Dbdict.cpp | 2 | ||||
-rw-r--r-- | ndb/src/kernel/blocks/dbdih/DbdihMain.cpp | 6 | ||||
-rw-r--r-- | ndb/src/kernel/blocks/dblqh/DblqhMain.cpp | 7 | ||||
-rw-r--r-- | ndb/src/kernel/blocks/dbtc/DbtcMain.cpp | 10 | ||||
-rw-r--r-- | ndb/src/kernel/blocks/dbtup/DbtupGen.cpp | 6 | ||||
-rw-r--r-- | ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp | 1 | ||||
-rw-r--r-- | ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp | 1 | ||||
-rw-r--r-- | ndb/src/kernel/vm/SimulatedBlock.cpp | 12 | ||||
-rw-r--r-- | ndb/src/kernel/vm/SimulatedBlock.hpp | 8 |
11 files changed, 57 insertions, 5 deletions
diff --git a/ndb/src/common/mgmcommon/ConfigInfo.cpp b/ndb/src/common/mgmcommon/ConfigInfo.cpp index 89280aa80e8..540c34150a9 100644 --- a/ndb/src/common/mgmcommon/ConfigInfo.cpp +++ b/ndb/src/common/mgmcommon/ConfigInfo.cpp @@ -494,7 +494,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = { ConfigInfo::USED, true, ConfigInfo::INT, - 4000, + 6000, 70, MAX_INT_RNIL }, diff --git a/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp b/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp index ccc1acdd273..9a9e15a66ef 100644 --- a/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp +++ b/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp @@ -757,6 +757,7 @@ void Dbacc::initialiseDirRec(Signal* signal) DirectoryarrayPtr idrDirptr; ndbrequire(cdirarraysize > 0); for (idrDirptr.i = 0; idrDirptr.i < cdirarraysize; idrDirptr.i++) { + refresh_watch_dog(); ptrAss(idrDirptr, directoryarray); for (Uint32 i = 0; i <= 255; i++) { idrDirptr.p->pagep[i] = RNIL; @@ -776,6 +777,7 @@ void Dbacc::initialiseDirRangeRec(Signal* signal) ndbrequire(cdirrangesize > 0); for (idrDirRangePtr.i = 0; idrDirRangePtr.i < cdirrangesize; idrDirRangePtr.i++) { + refresh_watch_dog(); ptrAss(idrDirRangePtr, dirRange); idrDirRangePtr.p->dirArray[0] = idrDirRangePtr.i + 1; for (Uint32 i = 1; i < 256; i++) { @@ -798,6 +800,7 @@ void Dbacc::initialiseFragRec(Signal* signal) ndbrequire(cfragmentsize > 0); for (regFragPtr.i = 0; regFragPtr.i < cfragmentsize; regFragPtr.i++) { jam(); + refresh_watch_dog(); ptrAss(regFragPtr, fragmentrec); initFragGeneral(regFragPtr); regFragPtr.p->nextfreefrag = regFragPtr.i + 1; @@ -876,6 +879,7 @@ void Dbacc::initialiseOperationRec(Signal* signal) { ndbrequire(coprecsize > 0); for (operationRecPtr.i = 0; operationRecPtr.i < coprecsize; operationRecPtr.i++) { + refresh_watch_dog(); ptrAss(operationRecPtr, operationrec); operationRecPtr.p->transactionstate = IDLE; operationRecPtr.p->operation = ZUNDEFINED_OP; @@ -898,6 +902,7 @@ void Dbacc::initialiseOverflowRec(Signal* signal) ndbrequire(coverflowrecsize > 0); for (iorOverflowRecPtr.i = 0; iorOverflowRecPtr.i < coverflowrecsize; iorOverflowRecPtr.i++) { + refresh_watch_dog(); ptrAss(iorOverflowRecPtr, overflowRecord); iorOverflowRecPtr.p->nextfreeoverrec = iorOverflowRecPtr.i + 1; }//for @@ -958,6 +963,7 @@ void Dbacc::initialiseRootfragRec(Signal* signal) { ndbrequire(crootfragmentsize > 0); for (rootfragrecptr.i = 0; rootfragrecptr.i < crootfragmentsize; rootfragrecptr.i++) { + refresh_watch_dog(); ptrAss(rootfragrecptr, rootfragmentrec); rootfragrecptr.p->nextroot = rootfragrecptr.i + 1; rootfragrecptr.p->fragmentptr[0] = RNIL; @@ -1013,6 +1019,7 @@ void Dbacc::initialiseTableRec(Signal* signal) { ndbrequire(ctablesize > 0); for (tabptr.i = 0; tabptr.i < ctablesize; tabptr.i++) { + refresh_watch_dog(); ptrAss(tabptr, tabrec); for (Uint32 i = 0; i < NO_OF_FRAG_PER_NODE; i++) { tabptr.p->fragholder[i] = RNIL; diff --git a/ndb/src/kernel/blocks/dbdict/Dbdict.cpp b/ndb/src/kernel/blocks/dbdict/Dbdict.cpp index 3b99f0d5392..b9891589fd2 100644 --- a/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +++ b/ndb/src/kernel/blocks/dbdict/Dbdict.cpp @@ -1313,6 +1313,7 @@ void Dbdict::initTableRecords() TableRecordPtr tablePtr; while (1) { jam(); + refresh_watch_dog(); c_tableRecordPool.seize(tablePtr); if (tablePtr.i == RNIL) { jam(); @@ -1373,6 +1374,7 @@ void Dbdict::initTriggerRecords() TriggerRecordPtr triggerPtr; while (1) { jam(); + refresh_watch_dog(); c_triggerRecordPool.seize(triggerPtr); if (triggerPtr.i == RNIL) { jam(); diff --git a/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp b/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp index 059f1301ba2..9ced0ff3ca5 100644 --- a/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp +++ b/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp @@ -6893,6 +6893,7 @@ void Dbdih::initialiseFragstore() cfirstfragstore = RNIL; cremainingfrags = 0; for (Uint32 i = 0; i < noOfChunks; i++) { + refresh_watch_dog(); ptrCheckGuard(fragPtr, cfragstoreFileSize, fragmentstore); fragPtr.p->nextFragmentChunk = cfirstfragstore; cfirstfragstore = fragPtr.i; @@ -11100,6 +11101,7 @@ void Dbdih::initialiseRecordsLab(Signal* signal, jam(); /******** INTIALIZING API CONNECT RECORDS ********/ for (apiConnectptr.i = 0; apiConnectptr.i < capiConnectFileSize; apiConnectptr.i++) { + refresh_watch_dog(); ptrAss(apiConnectptr, apiConnectRecord); apiConnectptr.p->nextApi = RNIL; }//for @@ -11111,6 +11113,7 @@ void Dbdih::initialiseRecordsLab(Signal* signal, jam(); /****** CONNECT ******/ for (connectPtr.i = 0; connectPtr.i < cconnectFileSize; connectPtr.i++) { + refresh_watch_dog(); ptrAss(connectPtr, connectRecord); connectPtr.p->userpointer = RNIL; connectPtr.p->userblockref = ZNIL; @@ -11175,6 +11178,7 @@ void Dbdih::initialiseRecordsLab(Signal* signal, jam(); /******* PAGE RECORD ******/ for (pagePtr.i = 0; pagePtr.i < cpageFileSize; pagePtr.i++) { + refresh_watch_dog(); ptrAss(pagePtr, pageRecord); pagePtr.p->nextfreepage = pagePtr.i + 1; }//for @@ -11191,6 +11195,7 @@ void Dbdih::initialiseRecordsLab(Signal* signal, /******* REPLICA RECORD ******/ for (initReplicaPtr.i = 0; initReplicaPtr.i < creplicaFileSize; initReplicaPtr.i++) { + refresh_watch_dog(); ptrAss(initReplicaPtr, replicaRecord); initReplicaPtr.p->lcpIdStarted = 0; initReplicaPtr.p->lcpOngoingFlag = false; @@ -11210,6 +11215,7 @@ void Dbdih::initialiseRecordsLab(Signal* signal, /********* TAB-DESCRIPTOR ********/ for (loopTabptr.i = 0; loopTabptr.i < ctabFileSize; loopTabptr.i++) { ptrAss(loopTabptr, tabRecord); + refresh_watch_dog(); initTable(loopTabptr); }//for break; diff --git a/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp b/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp index 8bef953f522..ca538612c6e 100644 --- a/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp +++ b/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp @@ -15931,6 +15931,7 @@ void Dblqh::initialiseAttrbuf(Signal* signal) for (attrinbufptr.i = 0; attrinbufptr.i < cattrinbufFileSize; attrinbufptr.i++) { + refresh_watch_dog(); ptrAss(attrinbufptr, attrbuf); attrinbufptr.p->attrbuf[ZINBUF_NEXT] = attrinbufptr.i + 1; }//for @@ -15953,6 +15954,7 @@ void Dblqh::initialiseDatabuf(Signal* signal) { if (cdatabufFileSize != 0) { for (databufptr.i = 0; databufptr.i < cdatabufFileSize; databufptr.i++) { + refresh_watch_dog(); ptrAss(databufptr, databuf); databufptr.p->nextDatabuf = databufptr.i + 1; }//for @@ -15974,6 +15976,7 @@ void Dblqh::initialiseFragrec(Signal* signal) { if (cfragrecFileSize != 0) { for (fragptr.i = 0; fragptr.i < cfragrecFileSize; fragptr.i++) { + refresh_watch_dog(); ptrAss(fragptr, fragrecord); fragptr.p->fragStatus = Fragrecord::FREE; fragptr.p->fragActiveStatus = ZFALSE; @@ -16106,6 +16109,7 @@ void Dblqh::initialiseLogPage(Signal* signal) { if (clogPageFileSize != 0) { for (logPagePtr.i = 0; logPagePtr.i < clogPageFileSize; logPagePtr.i++) { + refresh_watch_dog(); ptrAss(logPagePtr, logPageRecord); logPagePtr.p->logPageWord[ZNEXT_PAGE] = logPagePtr.i + 1; }//for @@ -16283,6 +16287,7 @@ void Dblqh::initialiseScanrec(Signal* signal) DLList<ScanRecord> tmp(c_scanRecordPool); while (tmp.seize(scanptr)){ //new (scanptr.p) ScanRecord(); + refresh_watch_dog(); scanptr.p->scanType = ScanRecord::ST_IDLE; scanptr.p->scanState = ScanRecord::SCAN_FREE; scanptr.p->scanTcWaiting = ZFALSE; @@ -16300,6 +16305,7 @@ void Dblqh::initialiseTabrec(Signal* signal) { if (ctabrecFileSize != 0) { for (tabptr.i = 0; tabptr.i < ctabrecFileSize; tabptr.i++) { + refresh_watch_dog(); ptrAss(tabptr, tablerec); tabptr.p->tableStatus = Tablerec::NOT_DEFINED; tabptr.p->usageCount = 0; @@ -16321,6 +16327,7 @@ void Dblqh::initialiseTcrec(Signal* signal) for (tcConnectptr.i = 0; tcConnectptr.i < ctcConnectrecFileSize; tcConnectptr.i++) { + refresh_watch_dog(); ptrAss(tcConnectptr, tcConnectionrec); tcConnectptr.p->transactionState = TcConnectionrec::TC_NOT_CONNECTED; tcConnectptr.p->tcScanRec = RNIL; diff --git a/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp b/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp index 066fb24f09c..c85f38a4361 100644 --- a/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp +++ b/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp @@ -9581,6 +9581,7 @@ void Dbtc::initApiConnect(Signal* signal) ndbrequire(tiacTmp > 0); guard4 = tiacTmp + 1; for (cachePtr.i = 0; cachePtr.i < guard4; cachePtr.i++) { + refresh_watch_dog(); ptrAss(cachePtr, cacheRecord); cachePtr.p->firstAttrbuf = RNIL; cachePtr.p->lastAttrbuf = RNIL; @@ -9595,6 +9596,7 @@ void Dbtc::initApiConnect(Signal* signal) guard4 = tiacTmp - 1; for (apiConnectptr.i = 0; apiConnectptr.i <= guard4; apiConnectptr.i++) { + refresh_watch_dog(); jam(); ptrAss(apiConnectptr, apiConnectRecord); apiConnectptr.p->apiConnectstate = CS_DISCONNECTED; @@ -9620,6 +9622,7 @@ void Dbtc::initApiConnect(Signal* signal) guard4 = (2 * tiacTmp) - 1; for (apiConnectptr.i = tiacTmp; apiConnectptr.i <= guard4; apiConnectptr.i++) { + refresh_watch_dog(); jam(); ptrCheckGuard(apiConnectptr, capiConnectFilesize, apiConnectRecord); apiConnectptr.p->apiConnectstate = CS_RESTART; @@ -9645,6 +9648,7 @@ void Dbtc::initApiConnect(Signal* signal) guard4 = (3 * tiacTmp) - 1; for (apiConnectptr.i = 2 * tiacTmp; apiConnectptr.i <= guard4; apiConnectptr.i++) { + refresh_watch_dog(); jam(); ptrCheckGuard(apiConnectptr, capiConnectFilesize, apiConnectRecord); setApiConTimer(apiConnectptr.i, 0, __LINE__); @@ -9673,6 +9677,7 @@ void Dbtc::initattrbuf(Signal* signal) { ndbrequire(cattrbufFilesize > 0); for (attrbufptr.i = 0; attrbufptr.i < cattrbufFilesize; attrbufptr.i++) { + refresh_watch_dog(); jam(); ptrAss(attrbufptr, attrbufRecord); attrbufptr.p->attrbuf[ZINBUF_NEXT] = attrbufptr.i + 1; /* NEXT ATTRBUF */ @@ -9687,6 +9692,7 @@ void Dbtc::initdatabuf(Signal* signal) { ndbrequire(cdatabufFilesize > 0); for (databufptr.i = 0; databufptr.i < cdatabufFilesize; databufptr.i++) { + refresh_watch_dog(); ptrAss(databufptr, databufRecord); databufptr.p->nextDatabuf = databufptr.i + 1; }//for @@ -9814,6 +9820,7 @@ void Dbtc::initialiseScanrec(Signal* signal) ScanRecordPtr scanptr; ndbrequire(cscanrecFileSize > 0); for (scanptr.i = 0; scanptr.i < cscanrecFileSize; scanptr.i++) { + refresh_watch_dog(); jam(); ptrAss(scanptr, scanRecord); new (scanptr.p) ScanRecord(); @@ -9840,6 +9847,7 @@ void Dbtc::initTable(Signal* signal) ndbrequire(ctabrecFilesize > 0); for (tabptr.i = 0; tabptr.i < ctabrecFilesize; tabptr.i++) { + refresh_watch_dog(); ptrAss(tabptr, tableRecord); tabptr.p->currentSchemaVersion = 0; tabptr.p->storedTable = true; @@ -9856,6 +9864,7 @@ void Dbtc::initialiseTcConnect(Signal* signal) // Place half of tcConnectptr's in cfirstfreeTcConnectFail list Uint32 titcTmp = ctcConnectFilesize / 2; for (tcConnectptr.i = 0; tcConnectptr.i < titcTmp; tcConnectptr.i++) { + refresh_watch_dog(); jam(); ptrAss(tcConnectptr, tcConnectRecord); tcConnectptr.p->tcConnectstate = OS_RESTART; @@ -9871,6 +9880,7 @@ void Dbtc::initialiseTcConnect(Signal* signal) // Place other half in cfirstfreeTcConnect list for (tcConnectptr.i = titcTmp; tcConnectptr.i < ctcConnectFilesize; tcConnectptr.i++) { + refresh_watch_dog(); jam(); ptrAss(tcConnectptr, tcConnectRecord); tcConnectptr.p->tcConnectstate = OS_RESTART; diff --git a/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp b/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp index 3b54817edb0..699b06c0506 100644 --- a/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp +++ b/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp @@ -891,6 +891,7 @@ void Dbtup::initializeAttrbufrec() AttrbufrecPtr attrBufPtr; for (attrBufPtr.i = 0; attrBufPtr.i < cnoOfAttrbufrec; attrBufPtr.i++) { + refresh_watch_dog(); ptrAss(attrBufPtr, attrbufrec); attrBufPtr.p->attrbuf[ZBUF_NEXT] = attrBufPtr.i + 1; }//for @@ -947,6 +948,7 @@ void Dbtup::initializeFragrecord() { FragrecordPtr regFragPtr; for (regFragPtr.i = 0; regFragPtr.i < cnoOfFragrec; regFragPtr.i++) { + refresh_watch_dog(); ptrAss(regFragPtr, fragrecord); regFragPtr.p->nextfreefrag = regFragPtr.i + 1; regFragPtr.p->checkpointVersion = RNIL; @@ -985,6 +987,7 @@ void Dbtup::initializeOperationrec() { OperationrecPtr regOpPtr; for (regOpPtr.i = 0; regOpPtr.i < cnoOfOprec; regOpPtr.i++) { + refresh_watch_dog(); ptrAss(regOpPtr, operationrec); regOpPtr.p->firstAttrinbufrec = RNIL; regOpPtr.p->lastAttrinbufrec = RNIL; @@ -1039,6 +1042,7 @@ void Dbtup::initializeTablerec() TablerecPtr regTabPtr; for (regTabPtr.i = 0; regTabPtr.i < cnoOfTablerec; regTabPtr.i++) { ljam(); + refresh_watch_dog(); ptrAss(regTabPtr, tablerec); initTab(regTabPtr.p); }//for @@ -1102,6 +1106,7 @@ void Dbtup::initializeTabDescr() cfreeTdList[i] = RNIL; }//for for (regTabDesPtr.i = 0; regTabDesPtr.i < cnoOfTabDescrRec; regTabDesPtr.i++) { + refresh_watch_dog(); ptrAss(regTabDesPtr, tableDescriptor); regTabDesPtr.p->tabDescr = RNIL; }//for @@ -1114,6 +1119,7 @@ void Dbtup::initializeUndoPage() for (undoPagep.i = 0; undoPagep.i < cnoOfUndoPage; undoPagep.i = undoPagep.i + ZUB_SEGMENT_SIZE) { + refresh_watch_dog(); ptrAss(undoPagep, undoPage); undoPagep.p->undoPageWord[ZPAGE_NEXT_POS] = undoPagep.i + ZUB_SEGMENT_SIZE; diff --git a/ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp b/ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp index 410cafee161..d842ee288a7 100644 --- a/ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp +++ b/ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp @@ -123,6 +123,7 @@ void Dbtup::initializePage() PagePtr pagePtr; for (pagePtr.i = 0; pagePtr.i < cnoOfPage; pagePtr.i++) { ljam(); + refresh_watch_dog(); ptrAss(pagePtr, page); pagePtr.p->pageWord[ZPAGE_PHYSICAL_INDEX] = pagePtr.i; pagePtr.p->pageWord[ZPAGE_NEXT_POS] = pagePtr.i + 1; diff --git a/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp b/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp index 93a5c78338c..0ab09d6f315 100644 --- a/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp +++ b/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp @@ -187,6 +187,7 @@ Dbtux::execREAD_CONFIG_REQ(Signal* signal) IndexPtr indexPtr; while (1) { jam(); + refresh_watch_dog(); c_indexPool.seize(indexPtr); if (indexPtr.i == RNIL) { jam(); diff --git a/ndb/src/kernel/vm/SimulatedBlock.cpp b/ndb/src/kernel/vm/SimulatedBlock.cpp index a6a8a6242cd..01939cec0ac 100644 --- a/ndb/src/kernel/vm/SimulatedBlock.cpp +++ b/ndb/src/kernel/vm/SimulatedBlock.cpp @@ -641,7 +641,7 @@ SimulatedBlock::allocRecord(const char * type, size_t s, size_t n) const void* p = NULL; size_t size = n*s; - + refresh_watch_dog(); if (size > 0){ #ifdef VM_TRACE_MEM ndbout_c("%s::allocRecord(%s, %u, %u) = %u bytes", @@ -660,8 +660,7 @@ SimulatedBlock::allocRecord(const char * type, size_t s, size_t n) const snprintf(buf2, sizeof(buf2), "Requested: %ux%u = %u bytes", (Uint32)s, (Uint32)n, (Uint32)size); ERROR_SET(fatal, ERR_MEMALLOC, buf1, buf2); } - - +#ifdef NDB_DEBUG_FULL // Set the allocated memory to zero #ifndef NDB_PURIFY #if defined NDB_OSE @@ -686,6 +685,7 @@ SimulatedBlock::allocRecord(const char * type, size_t s, size_t n) const memset(p, 0xF1, size); #endif #endif +#endif } return p; } @@ -704,6 +704,12 @@ SimulatedBlock::deallocRecord(void ** ptr, } void +SimulatedBlock::refresh_watch_dog() +{ + globalData.incrementWatchDogCounter(1); +} + +void SimulatedBlock::progError(int line, int err_code, const char* extra) const { jamLine(line); diff --git a/ndb/src/kernel/vm/SimulatedBlock.hpp b/ndb/src/kernel/vm/SimulatedBlock.hpp index 491d432625e..7a083adc28a 100644 --- a/ndb/src/kernel/vm/SimulatedBlock.hpp +++ b/ndb/src/kernel/vm/SimulatedBlock.hpp @@ -304,7 +304,13 @@ protected: BlockNumber number() const; BlockReference reference() const; NodeId getOwnNodeId() const; - + + /** + * Refresh Watch Dog in initialising code + * + */ + void refresh_watch_dog(); + /** * Prog error * This function should be called when this node should be shutdown |