Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
e2178591
Commit
e2178591
authored
Sep 08, 2005
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge mikael@ndb.mysql.com:/home/mikael/bug12594
into mysql.com:/Users/mikron/mysql-4.1
parents
110230be
d5028e2c
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
110 additions
and
74 deletions
+110
-74
ndb/src/kernel/blocks/dblqh/Dblqh.hpp
ndb/src/kernel/blocks/dblqh/Dblqh.hpp
+18
-4
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
+71
-69
ndb/src/kernel/blocks/dblqh/redoLogReader/records.cpp
ndb/src/kernel/blocks/dblqh/redoLogReader/records.cpp
+10
-1
ndb/src/kernel/blocks/dblqh/redoLogReader/records.hpp
ndb/src/kernel/blocks/dblqh/redoLogReader/records.hpp
+11
-0
No files found.
ndb/src/kernel/blocks/dblqh/Dblqh.hpp
View file @
e2178591
...
...
@@ -86,6 +86,17 @@
#define ZCURR_PAGE_INDEX 8
#define ZLAST_LOG_PREP_REF 10
#define ZPOS_DIRTY 11
/* A number of debug items written in the page header of all log files */
#define ZPOS_LOG_TIMER 12
#define ZPOS_PAGE_I 13
#define ZPOS_PLACE_WRITTEN_FROM 14
#define ZPOS_PAGE_NO 15
#define ZPOS_PAGE_FILE_NO 16
#define ZPOS_WORD_WRITTEN 17
#define ZPOS_IN_WRITING 18
#define ZPOS_PREV_PAGE_NO 19
#define ZPOS_IN_FREE_LIST 20
/* ------------------------------------------------------------------------- */
/* CONSTANTS FOR THE VARIOUS REPLICA AND NODE TYPES. */
/* ------------------------------------------------------------------------- */
...
...
@@ -2278,7 +2289,7 @@ private:
const
LogPartRecordPtr
&
sltLogPartPtr
);
void
checkGcpCompleted
(
Signal
*
signal
,
Uint32
pageWritten
,
Uint32
wordWritten
);
void
initFsopenconf
(
Signal
*
signal
);
void
initFsrwconf
(
Signal
*
signal
);
void
initFsrwconf
(
Signal
*
signal
,
bool
write
);
void
initLfo
(
Signal
*
signal
);
void
initLogfile
(
Signal
*
signal
,
Uint32
fileNo
);
void
initLogpage
(
Signal
*
signal
);
...
...
@@ -2294,7 +2305,8 @@ private:
void
writeFileDescriptor
(
Signal
*
signal
);
void
writeFileHeaderOpen
(
Signal
*
signal
,
Uint32
type
);
void
writeInitMbyte
(
Signal
*
signal
);
void
writeSinglePage
(
Signal
*
signal
,
Uint32
pageNo
,
Uint32
wordWritten
);
void
writeSinglePage
(
Signal
*
signal
,
Uint32
pageNo
,
Uint32
wordWritten
,
Uint32
place
);
void
buildLinkedLogPageList
(
Signal
*
signal
);
void
changeMbyte
(
Signal
*
signal
);
Uint32
checkIfExecLog
(
Signal
*
signal
);
...
...
@@ -2303,7 +2315,7 @@ private:
void
checkScanTcCompleted
(
Signal
*
signal
);
void
checkSrCompleted
(
Signal
*
signal
);
void
closeFile
(
Signal
*
signal
,
LogFileRecordPtr
logFilePtr
);
void
completedLogPage
(
Signal
*
signal
,
Uint32
clpType
);
void
completedLogPage
(
Signal
*
signal
,
Uint32
clpType
,
Uint32
place
);
void
deleteFragrec
(
Uint32
fragId
);
void
deleteTransidHash
(
Signal
*
signal
);
void
findLogfile
(
Signal
*
signal
,
...
...
@@ -2399,7 +2411,9 @@ private:
void
writeAbortLog
(
Signal
*
signal
);
void
writeCommitLog
(
Signal
*
signal
,
LogPartRecordPtr
regLogPartPtr
);
void
writeCompletedGciLog
(
Signal
*
signal
);
void
writeDirty
(
Signal
*
signal
);
void
writeDbgInfoPageHeader
(
LogPageRecordPtr
logPagePtr
,
Uint32
place
,
Uint32
pageNo
,
Uint32
wordWritten
);
void
writeDirty
(
Signal
*
signal
,
Uint32
place
);
void
writeKey
(
Signal
*
signal
);
void
writeLogHeader
(
Signal
*
signal
);
void
writeLogWord
(
Signal
*
signal
,
Uint32
data
);
...
...
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
View file @
e2178591
...
...
@@ -11749,42 +11749,34 @@ void Dblqh::execFSCLOSECONF(Signal* signal)
ptrCheckGuard(logFilePtr, clogFileFileSize, logFileRecord);
exitFromInvalidate(signal);
return;
break
;
case LogFileRecord::CLOSING_INIT:
jam();
closingInitLab(signal);
return;
break
;
case LogFileRecord::CLOSING_SR:
jam();
closingSrLab(signal);
return;
break
;
case LogFileRecord::CLOSING_EXEC_SR:
jam();
closeExecSrLab(signal);
return;
break
;
case LogFileRecord::CLOSING_EXEC_SR_COMPLETED:
jam();
closeExecSrCompletedLab(signal);
return;
break
;
case LogFileRecord::CLOSING_WRITE_LOG:
jam();
closeWriteLogLab(signal);
return;
break
;
case LogFileRecord::CLOSING_EXEC_LOG:
jam();
closeExecLogLab(signal);
return;
break
;
default:
jam();
systemErrorLab(signal);
return;
break
;
}//switch
}//Dblqh::execFSCLOSECONF()
...
...
@@ -11802,77 +11794,64 @@ void Dblqh::execFSOPENCONF(Signal* signal)
logFilePtr.p->logFileStatus = LogFileRecord::OPEN;
readFileInInvalidate(signal);
return;
break
;
case LogFileRecord::OPENING_INIT:
jam();
logFilePtr.p->logFileStatus = LogFileRecord::OPEN;
openFileInitLab(signal);
return;
break
;
case LogFileRecord::OPEN_SR_FRONTPAGE:
jam();
logFilePtr.p->logFileStatus = LogFileRecord::OPEN;
openSrFrontpageLab(signal);
return;
break
;
case LogFileRecord::OPEN_SR_LAST_FILE:
jam();
logFilePtr.p->logFileStatus = LogFileRecord::OPEN;
openSrLastFileLab(signal);
return;
break
;
case LogFileRecord::OPEN_SR_NEXT_FILE:
jam();
logFilePtr.p->logFileStatus = LogFileRecord::OPEN;
openSrNextFileLab(signal);
return;
break
;
case LogFileRecord::OPEN_EXEC_SR_START:
jam();
logFilePtr.p->logFileStatus = LogFileRecord::OPEN;
openExecSrStartLab(signal);
return;
break
;
case LogFileRecord::OPEN_EXEC_SR_NEW_MBYTE:
jam();
logFilePtr.p->logFileStatus = LogFileRecord::OPEN;
openExecSrNewMbyteLab(signal);
return;
break
;
case LogFileRecord::OPEN_SR_FOURTH_PHASE:
jam();
logFilePtr.p->logFileStatus = LogFileRecord::OPEN;
openSrFourthPhaseLab(signal);
return;
break
;
case LogFileRecord::OPEN_SR_FOURTH_NEXT:
jam();
logFilePtr.p->logFileStatus = LogFileRecord::OPEN;
openSrFourthNextLab(signal);
return;
break
;
case LogFileRecord::OPEN_SR_FOURTH_ZERO:
jam();
logFilePtr.p->logFileStatus = LogFileRecord::OPEN;
openSrFourthZeroLab(signal);
return;
break
;
case LogFileRecord::OPENING_WRITE_LOG:
jam();
logFilePtr.p->logFileStatus = LogFileRecord::OPEN;
return;
break
;
case LogFileRecord::OPEN_EXEC_LOG:
jam();
logFilePtr.p->logFileStatus = LogFileRecord::OPEN;
openExecLogLab(signal);
return;
break
;
default:
jam();
systemErrorLab(signal);
return;
break
;
}//switch
}//Dblqh::execFSOPENCONF()
...
...
@@ -11883,7 +11862,7 @@ void Dblqh::execFSOPENCONF(Signal* signal)
void Dblqh::execFSREADCONF(Signal* signal)
{
jamEntry();
initFsrwconf
(
signal
);
initFsrwconf(signal
, false
);
switch (lfoPtr.p->lfoState) {
case LogFileOperationRecord::READ_SR_LAST_MBYTE:
...
...
@@ -11891,57 +11870,47 @@ void Dblqh::execFSREADCONF(Signal* signal)
releaseLfo(signal);
readSrLastMbyteLab(signal);
return;
break
;
case LogFileOperationRecord::READ_SR_FRONTPAGE:
jam();
releaseLfo(signal);
readSrFrontpageLab(signal);
return;
break
;
case LogFileOperationRecord::READ_SR_LAST_FILE:
jam();
releaseLfo(signal);
readSrLastFileLab(signal);
return;
break
;
case LogFileOperationRecord::READ_SR_NEXT_FILE:
jam();
releaseLfo(signal);
readSrNextFileLab(signal);
return;
break
;
case LogFileOperationRecord::READ_EXEC_SR:
jam();
readExecSrLab(signal);
return;
break
;
case LogFileOperationRecord::READ_EXEC_LOG:
jam();
readExecLogLab(signal);
return;
break
;
case LogFileOperationRecord::READ_SR_INVALIDATE_PAGES:
jam();
invalidateLogAfterLastGCI(signal);
return;
break
;
case LogFileOperationRecord::READ_SR_FOURTH_PHASE:
jam();
releaseLfo(signal);
readSrFourthPhaseLab(signal);
return;
break
;
case LogFileOperationRecord::READ_SR_FOURTH_ZERO:
jam();
releaseLfo(signal);
readSrFourthZeroLab(signal);
return;
break
;
default:
jam();
systemErrorLab(signal);
return;
break
;
}//switch
}//Dblqh::execFSREADCONF()
...
...
@@ -11998,63 +11967,52 @@ void Dblqh::execFSREADREF(Signal* signal)
void Dblqh::execFSWRITECONF(Signal* signal)
{
jamEntry();
initFsrwconf
(
signal
);
initFsrwconf(signal
, true
);
switch (lfoPtr.p->lfoState) {
case LogFileOperationRecord::WRITE_SR_INVALIDATE_PAGES:
jam();
invalidateLogAfterLastGCI(signal);
return;
break
;
case LogFileOperationRecord::WRITE_PAGE_ZERO:
jam();
writePageZeroLab(signal);
return;
break
;
case LogFileOperationRecord::LAST_WRITE_IN_FILE:
jam();
lastWriteInFileLab(signal);
return;
break
;
case LogFileOperationRecord::INIT_WRITE_AT_END:
jam();
initWriteEndLab(signal);
return;
break
;
case LogFileOperationRecord::INIT_FIRST_PAGE:
jam();
initFirstPageLab(signal);
return;
break
;
case LogFileOperationRecord::WRITE_GCI_ZERO:
jam();
writeGciZeroLab(signal);
return;
break
;
case LogFileOperationRecord::WRITE_DIRTY:
jam();
writeDirtyLab(signal);
return;
break
;
case LogFileOperationRecord::WRITE_INIT_MBYTE:
jam();
writeInitMbyteLab(signal);
return;
break
;
case LogFileOperationRecord::ACTIVE_WRITE_LOG:
jam();
writeLogfileLab(signal);
return;
break
;
case LogFileOperationRecord::FIRST_PAGE_WRITE_IN_LOGFILE:
jam();
firstPageWriteLab(signal);
return;
break
;
default:
jam();
systemErrorLab(signal);
return;
break
;
}//switch
}//Dblqh::execFSWRITECONF()
...
...
@@ -12130,16 +12088,35 @@ void Dblqh::initFsopenconf(Signal* signal)
/* ======= INITIATE WHEN RECEIVING FSREADCONF AND FSWRITECONF ======= */
/* */
/* ========================================================================= */
void
Dblqh
::
initFsrwconf
(
Signal
*
signal
)
void Dblqh::initFsrwconf(Signal* signal
, bool write
)
{
LogPageRecordPtr logP;
Uint32 noPages, totPages;
lfoPtr.i = signal->theData[0];
ptrCheckGuard(lfoPtr, clfoFileSize, logFileOperationRecord);
totPages= lfoPtr.p->noPagesRw;
logFilePtr.i = lfoPtr.p->logFileRec;
ptrCheckGuard(logFilePtr, clogFileFileSize, logFileRecord);
logPartPtr.i = logFilePtr.p->logPartRec;
ptrCheckGuard(logPartPtr, clogPartFileSize, logPartRecord);
logPagePtr.i = lfoPtr.p->firstLfoPage;
ptrCheckGuard(logPagePtr, clogPageFileSize, logPageRecord);
logP= logPagePtr;
noPages= 1;
ndbassert(totPages > 0);
for (;;)
{
logP.p->logPageWord[ZPOS_IN_WRITING]= 0;
logP.p->logPageWord[ZPOS_IN_FREE_LIST]= 0;
if (noPages == totPages)
return;
if (write)
logP.i= logP.p->logPageWord[ZNEXT_PAGE];
else
logP.i= lfoPtr.p->logPageArray[noPages];
ptrCheckGuard(logP, clogPageFileSize, logPageRecord);
noPages++;
}
}//Dblqh::initFsrwconf()
/* ######################################################################### */
...
...
@@ -12227,7 +12204,7 @@ void Dblqh::timeSup(Signal* signal)
ndbrequire(wordWritten < ZPAGE_SIZE);
if (logFilePtr.p->noLogpagesInBuffer > 0) {
jam();
completedLogPage
(
signal
,
ZENFORCE_WRITE
);
completedLogPage(signal, ZENFORCE_WRITE
, __LINE__
);
/*---------------------------------------------------------------------------*/
/*SINCE WE ARE ONLY WRITING PART OF THE LAST PAGE WE HAVE TO UPDATE THE WORD */
/*WRITTEN TO REFLECT THE REAL LAST WORD WRITTEN. WE ALSO HAVE TO MOVE THE */
...
...
@@ -12249,7 +12226,8 @@ void Dblqh::timeSup(Signal* signal)
releaseLogpage(signal);
} else {
jam();
writeSinglePage
(
signal
,
logFilePtr
.
p
->
currentFilepage
,
wordWritten
);
writeSinglePage(signal, logFilePtr.p->currentFilepage,
wordWritten, __LINE__);
lfoPtr.p->lfoState = LogFileOperationRecord::ACTIVE_WRITE_LOG;
}//if
}//if
...
...
@@ -12385,7 +12363,7 @@ void Dblqh::firstPageWriteLab(Signal* signal)
logPagePtr.i = logFilePtr.p->logPageZero;
ptrCheckGuard(logPagePtr, clogPageFileSize, logPageRecord);
logPagePtr.p->logPageWord[ZPAGE_HEADER_SIZE + ZPOS_FILE_NO] = fileNo;
writeSinglePage
(
signal
,
0
,
ZPAGE_SIZE
-
1
);
writeSinglePage(signal, 0, ZPAGE_SIZE - 1
, __LINE__
);
lfoPtr.p->logFileRec = currLogFile;
lfoPtr.p->lfoState = LogFileOperationRecord::WRITE_PAGE_ZERO;
return;
...
...
@@ -12474,7 +12452,7 @@ void Dblqh::lastWriteInFileLab(Signal* signal)
logPagePtr.i = logFilePtr.p->logPageZero;
ptrCheckGuard(logPagePtr, clogPageFileSize, logPageRecord);
logPagePtr.p->logPageWord[ZPAGE_HEADER_SIZE + ZPOS_FILE_NO] = fileNo;
writeSinglePage
(
signal
,
0
,
ZPAGE_SIZE
-
1
);
writeSinglePage(signal, 0, ZPAGE_SIZE - 1
, __LINE__
);
lfoPtr.p->logFileRec = currLogFile;
lfoPtr.p->lfoState = LogFileOperationRecord::WRITE_PAGE_ZERO;
return;
...
...
@@ -12509,7 +12487,8 @@ void Dblqh::openFileInitLab(Signal* signal)
{
logFilePtr.p->logFileStatus = LogFileRecord::OPEN_INIT;
seizeLogpage(signal);
writeSinglePage
(
signal
,
(
ZNO_MBYTES_IN_FILE
*
ZPAGES_IN_MBYTE
)
-
1
,
ZPAGE_SIZE
-
1
);
writeSinglePage(signal, (ZNO_MBYTES_IN_FILE * ZPAGES_IN_MBYTE) - 1,
ZPAGE_SIZE - 1, __LINE__);
lfoPtr.p->lfoState = LogFileOperationRecord::INIT_WRITE_AT_END;
return;
}//Dblqh::openFileInitLab()
...
...
@@ -12550,7 +12529,7 @@ void Dblqh::initFirstPageLab(Signal* signal)
logPagePtr.p->logPageWord[ZPOS_LOG_LAP] = 1;
logPagePtr.p->logPageWord[ZPAGE_HEADER_SIZE] = ZCOMPLETED_GCI_TYPE;
logPagePtr.p->logPageWord[ZPAGE_HEADER_SIZE + 1] = 1;
writeSinglePage
(
signal
,
1
,
ZPAGE_SIZE
-
1
);
writeSinglePage(signal, 1, ZPAGE_SIZE - 1
, __LINE__
);
lfoPtr.p->lfoState = LogFileOperationRecord::WRITE_GCI_ZERO;
return;
}//if
...
...
@@ -12852,17 +12831,13 @@ void Dblqh::releaseLogpage(Signal* signal)
{
#ifdef VM_TRACE
// Check that log page isn't already in free list
LogPageRecordPtr
TlogPagePtr
;
TlogPagePtr
.
i
=
cfirstfreeLogPage
;
while
(
TlogPagePtr
.
i
!=
RNIL
){
ptrCheckGuard
(
TlogPagePtr
,
clogPageFileSize
,
logPageRecord
);
ndbrequire
(
TlogPagePtr
.
i
!=
logPagePtr
.
i
);
TlogPagePtr
.
i
=
TlogPagePtr
.
p
->
logPageWord
[
ZNEXT_PAGE
];
}
ndbrequire(logPagePtr.p->logPageWord[ZPOS_IN_FREE_LIST] == 0);
#endif
cnoOfLogPages++;
logPagePtr.p->logPageWord[ZNEXT_PAGE] = cfirstfreeLogPage;
logPagePtr.p->logPageWord[ZPOS_IN_WRITING]= 0;
logPagePtr.p->logPageWord[ZPOS_IN_FREE_LIST]= 1;
cfirstfreeLogPage = logPagePtr.i;
}//Dblqh::releaseLogpage()
...
...
@@ -12908,6 +12883,7 @@ void Dblqh::seizeLogpage(Signal* signal)
/* ------------------------------------------------------------------------- */
cfirstfreeLogPage = logPagePtr.p->logPageWord[ZNEXT_PAGE];
logPagePtr.p->logPageWord[ZNEXT_PAGE] = RNIL;
logPagePtr.p->logPageWord[ZPOS_IN_FREE_LIST] = 0;
}//Dblqh::seizeLogpage()
/* ------------------------------------------------------------------------- */
...
...
@@ -13015,7 +12991,7 @@ WMO_LOOP:
/* LOG FILE. THIS HAS SPECIAL SIGNIFANCE TO FIND */
/* THE END OF THE LOG AT SYSTEM RESTART. */
/* ------------------------------------------------------- */
writeSinglePage
(
signal
,
0
,
ZPAGE_SIZE
-
1
);
writeSinglePage(signal, 0, ZPAGE_SIZE - 1
, __LINE__
);
if (wmoType == ZINIT) {
jam();
lfoPtr.p->lfoState = LogFileOperationRecord::INIT_FIRST_PAGE;
...
...
@@ -13049,7 +13025,8 @@ WMO_LOOP:
void Dblqh::writeInitMbyte(Signal* signal)
{
initLogpage(signal);
writeSinglePage
(
signal
,
logFilePtr
.
p
->
currentMbyte
*
ZPAGES_IN_MBYTE
,
ZPAGE_SIZE
-
1
);
writeSinglePage(signal, logFilePtr.p->currentMbyte * ZPAGES_IN_MBYTE,
ZPAGE_SIZE - 1, __LINE__);
lfoPtr.p->lfoState = LogFileOperationRecord::WRITE_INIT_MBYTE;
}//Dblqh::writeInitMbyte()
...
...
@@ -13059,13 +13036,15 @@ void Dblqh::writeInitMbyte(Signal* signal)
/* INPUT: TWSP_PAGE_NO THE PAGE NUMBER WRITTEN */
/* SUBROUTINE SHORT NAME: WSP */
/* ------------------------------------------------------------------------- */
void
Dblqh
::
writeSinglePage
(
Signal
*
signal
,
Uint32
pageNo
,
Uint32
wordWritten
)
void Dblqh::writeSinglePage(Signal* signal, Uint32 pageNo,
Uint32 wordWritten, Uint32 place)
{
seizeLfo(signal);
initLfo(signal);
lfoPtr.p->firstLfoPage = logPagePtr.i;
logPagePtr.p->logPageWord[ZNEXT_PAGE] = RNIL;
writeDbgInfoPageHeader(logPagePtr, place, pageNo, wordWritten);
// Calculate checksum for page
logPagePtr.p->logPageWord[ZPOS_CHECKSUM] = calcPageCheckSum(logPagePtr);
...
...
@@ -14534,7 +14513,7 @@ void Dblqh::execSr(Signal* signal)
* IN THIS WE HAVE COMPLETED EXECUTION OF THE CURRENT LOG PAGE
* AND CAN WRITE IT TO DISK SINCE IT IS DIRTY.
* ----------------------------------------------------------------- */
writeDirty
(
signal
);
writeDirty(signal
, __LINE__
);
return;
break;
case LogPartRecord::LES_EXEC_LOG:
...
...
@@ -14545,7 +14524,7 @@ void Dblqh::execSr(Signal* signal)
* ------------------------------------------------------------------- */
if (logFilePtr.p->currentLogpage != logPartPtr.p->prevLogpage) {
jam();
writeDirty
(
signal
);
writeDirty(signal
, __LINE__
);
return;
}//if
break;
...
...
@@ -14989,7 +14968,8 @@ void Dblqh::invalidateLogAfterLastGCI(Signal* signal) {
// This page must be invalidated.
logPagePtr.p->logPageWord[ZPOS_LOG_LAP] = 0;
// Contact NDBFS. Real time break.
writeSinglePage
(
signal
,
logPartPtr
.
p
->
invalidatePageNo
,
ZPAGE_SIZE
-
1
);
writeSinglePage(signal, logPartPtr.p->invalidatePageNo,
ZPAGE_SIZE - 1, __LINE__);
lfoPtr.p->lfoState = LogFileOperationRecord::WRITE_SR_INVALIDATE_PAGES;
} else {
// We are done with invalidating. Finish start phase 3.4.
...
...
@@ -15937,7 +15917,7 @@ void Dblqh::closeFile(Signal* signal, LogFileRecordPtr clfLogFilePtr)
// logPartPtr
// Defines lfoPtr
/* ---------------------------------------------------------------- */
void
Dblqh
::
completedLogPage
(
Signal
*
signal
,
Uint32
clpType
)
void Dblqh::completedLogPage(Signal* signal, Uint32 clpType
, Uint32 place
)
{
LogPageRecordPtr clpLogPagePtr;
LogPageRecordPtr wlpLogPagePtr;
...
...
@@ -15980,6 +15960,9 @@ void Dblqh::completedLogPage(Signal* signal, Uint32 clpType)
twlpNoPages++;
ptrCheckGuard(wlpLogPagePtr, clogPageFileSize, logPageRecord);
writeDbgInfoPageHeader(wlpLogPagePtr, place,
logFilePtr.p->filePosition + twlpNoPages - 1,
ZPAGE_SIZE);
// Calculate checksum for page
wlpLogPagePtr.p->logPageWord[ZPOS_CHECKSUM] = calcPageCheckSum(wlpLogPagePtr);
wlpLogPagePtr.i = wlpLogPagePtr.p->logPageWord[ZNEXT_PAGE];
...
...
@@ -16382,6 +16365,8 @@ void Dblqh::initialiseLogPage(Signal* signal)
refresh_watch_dog();
ptrAss(logPagePtr, logPageRecord);
logPagePtr.p->logPageWord[ZNEXT_PAGE] = logPagePtr.i + 1;
logPagePtr.p->logPageWord[ZPOS_IN_FREE_LIST]= 1;
logPagePtr.p->logPageWord[ZPOS_IN_WRITING]= 0;
}//for
logPagePtr.i = clogPageFileSize - 1;
ptrAss(logPagePtr, logPageRecord);
...
...
@@ -18038,10 +18023,14 @@ void Dblqh::writeCompletedGciLog(Signal* signal)
*
* SUBROUTINE SHORT NAME: WD
* ------------------------------------------------------------------------- */
void
Dblqh
::
writeDirty
(
Signal
*
signal
)
void Dblqh::writeDirty(Signal* signal
, Uint32 place
)
{
logPagePtr.p->logPageWord[ZPOS_DIRTY] = ZNOT_DIRTY;
ndbassert(logPartPtr.p->prevFilepage ==
logPagePtr.p->logPageWord[ZPOS_PAGE_NO]);
writeDbgInfoPageHeader(logPagePtr, place, logPartPtr.p->prevFilepage,
ZPAGE_SIZE);
// Calculate checksum for page
logPagePtr.p->logPageWord[ZPOS_CHECKSUM] = calcPageCheckSum(logPagePtr);
...
...
@@ -18075,7 +18064,7 @@ void Dblqh::writeLogWord(Signal* signal, Uint32 data)
logPagePtr.p->logPageWord[ZCURR_PAGE_INDEX] = logPos + 1;
if ((logPos + 1) == ZPAGE_SIZE) {
jam();
completedLogPage
(
signal
,
ZNORMAL
);
completedLogPage(signal, ZNORMAL
, __LINE__
);
seizeLogpage(signal);
initLogpage(signal);
logFilePtr.p->currentLogpage = logPagePtr.i;
...
...
@@ -18133,7 +18122,7 @@ void Dblqh::writeNextLog(Signal* signal)
/* -------------------------------------------------- */
/* WE HAVE TO CHANGE LOG FILE */
/* -------------------------------------------------- */
completedLogPage
(
signal
,
ZLAST_WRITE_IN_FILE
);
completedLogPage(signal, ZLAST_WRITE_IN_FILE
, __LINE__
);
if (wnlNextLogFilePtr.p->fileNo == 0) {
jam();
/* -------------------------------------------------- */
...
...
@@ -18152,7 +18141,7 @@ void Dblqh::writeNextLog(Signal* signal)
/* INCREMENT THE CURRENT MBYTE */
/* SET PAGE INDEX TO PAGE HEADER SIZE */
/* -------------------------------------------------- */
completedLogPage
(
signal
,
ZENFORCE_WRITE
);
completedLogPage(signal, ZENFORCE_WRITE
, __LINE__
);
twnlNewMbyte = logFilePtr.p->currentMbyte + 1;
}//if
/* -------------------------------------------------- */
...
...
@@ -18520,3 +18509,16 @@ Uint32 Dblqh::calcPageCheckSum(LogPageRecordPtr logP){
return checkSum;
}
void Dblqh::writeDbgInfoPageHeader(LogPageRecordPtr logP, Uint32 place,
Uint32 pageNo, Uint32 wordWritten)
{
logP.p->logPageWord[ZPOS_LOG_TIMER]= logPartPtr.p->logTimer;
logP.p->logPageWord[ZPOS_PREV_PAGE_NO]= logP.p->logPageWord[ZPOS_PAGE_NO];
logP.p->logPageWord[ZPOS_PAGE_I]= logP.i;
logP.p->logPageWord[ZPOS_PLACE_WRITTEN_FROM]= place;
logP.p->logPageWord[ZPOS_PAGE_NO]= pageNo;
logP.p->logPageWord[ZPOS_PAGE_FILE_NO]= logFilePtr.p->fileNo;
logP.p->logPageWord[ZPOS_WORD_WRITTEN]= wordWritten;
logP.p->logPageWord[ZPOS_IN_WRITING]= 1;
}
ndb/src/kernel/blocks/dblqh/redoLogReader/records.cpp
View file @
e2178591
...
...
@@ -267,6 +267,15 @@ NdbOut& operator<<(NdbOut& no, const PageHeader& ph) {
printOut
(
"Oldest prepare op. file No.:"
,
ph
.
m_old_prepare_file_number
);
printOut
(
"Oldest prepare op. page ref.:"
,
ph
.
m_old_prepare_page_reference
);
printOut
(
"Dirty flag:"
,
ph
.
m_dirty_flag
);
printOut
(
"Write Timer:"
,
ph
.
m_log_timer
);
printOut
(
"Page i-val:"
,
ph
.
m_page_i_value
);
printOut
(
"Place written:"
,
ph
.
m_place_written_from
);
printOut
(
"Page No in File:"
,
ph
.
m_page_no
);
printOut
(
"File No:"
,
ph
.
m_file_no
);
printOut
(
"Word Written:"
,
ph
.
m_word_written
);
printOut
(
"In Writing (should be 1)"
,
ph
.
m_in_writing_flag
);
printOut
(
"Prev Page No (can be garbage)"
,
ph
.
m_prev_page_no
);
printOut
(
"In Free List (should be 0):"
,
ph
.
m_in_free_list
);
no
<<
endl
;
return
no
;
}
...
...
ndb/src/kernel/blocks/dblqh/redoLogReader/records.hpp
View file @
e2178591
...
...
@@ -147,6 +147,17 @@ protected:
Uint32
m_old_prepare_file_number
;
Uint32
m_old_prepare_page_reference
;
Uint32
m_dirty_flag
;
/* Debug info Start */
Uint32
m_log_timer
;
Uint32
m_page_i_value
;
Uint32
m_place_written_from
;
Uint32
m_page_no
;
Uint32
m_file_no
;
Uint32
m_word_written
;
Uint32
m_in_writing_flag
;
Uint32
m_prev_page_no
;
Uint32
m_in_free_list
;
/* Debug info End */
};
//----------------------------------------------------------------
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment