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
6dbca028
Commit
6dbca028
authored
Sep 08, 2005
by
mronstrom@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug #12594:
Added debug info to all log page headers
parent
055a9681
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
88 additions
and
27 deletions
+88
-27
ndb/src/kernel/blocks/dblqh/Dblqh.hpp
ndb/src/kernel/blocks/dblqh/Dblqh.hpp
+17
-3
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
+60
-24
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 @
6dbca028
...
...
@@ -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_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. */
/* ------------------------------------------------------------------------- */
...
...
@@ -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 @
6dbca028
...
...
@@ -12132,6 +12132,7 @@ void Dblqh::initFsopenconf(Signal* signal)
/* ========================================================================= */
void
Dblqh
::
initFsrwconf
(
Signal
*
signal
)
{
LogPageRecordPtr
logP
;
lfoPtr
.
i
=
signal
->
theData
[
0
];
ptrCheckGuard
(
lfoPtr
,
clfoFileSize
,
logFileOperationRecord
);
logFilePtr
.
i
=
lfoPtr
.
p
->
logFileRec
;
...
...
@@ -12140,6 +12141,16 @@ void Dblqh::initFsrwconf(Signal* signal)
ptrCheckGuard
(
logPartPtr
,
clogPartFileSize
,
logPartRecord
);
logPagePtr
.
i
=
lfoPtr
.
p
->
firstLfoPage
;
ptrCheckGuard
(
logPagePtr
,
clogPageFileSize
,
logPageRecord
);
logP
=
logPagePtr
;
for
(;;)
{
logP
.
p
->
logPageWord
[
ZPOS_IN_WRITING
]
=
0
;
logP
.
p
->
logPageWord
[
ZPOS_IN_FREE_LIST
]
=
0
;
if
(
logP
.
p
->
logPageWord
[
ZNEXT_PAGE
]
==
RNIL
)
return
;
logP
.
i
=
logP
.
p
->
logPageWord
[
ZNEXT_PAGE
];
ptrCheckGuard
(
logP
,
clogPageFileSize
,
logPageRecord
);
}
}
//Dblqh::initFsrwconf()
/* ######################################################################### */
...
...
@@ -12227,7 +12238,7 @@ void Dblqh::timeSup(Signal* signal)
ndbrequire
(
wordWritten
<
ZPAGE_SIZE
);
if
(
logFilePtr
.
p
->
noLogpagesInBuffer
>
0
)
{
jam
();
completedLogPage
(
signal
,
ZENFORCE_WRITE
);
completedLogPage
(
signal
,
ZENFORCE_WRITE
,
11
);
/*---------------------------------------------------------------------------*/
/*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 +12260,8 @@ void Dblqh::timeSup(Signal* signal)
releaseLogpage
(
signal
);
}
else
{
jam
();
writeSinglePage
(
signal
,
logFilePtr
.
p
->
currentFilepage
,
wordWritten
);
writeSinglePage
(
signal
,
logFilePtr
.
p
->
currentFilepage
,
wordWritten
,
1
);
lfoPtr
.
p
->
lfoState
=
LogFileOperationRecord
::
ACTIVE_WRITE_LOG
;
}
//if
}
//if
...
...
@@ -12385,7 +12397,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
,
2
);
lfoPtr
.
p
->
logFileRec
=
currLogFile
;
lfoPtr
.
p
->
lfoState
=
LogFileOperationRecord
::
WRITE_PAGE_ZERO
;
return
;
...
...
@@ -12474,7 +12486,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
,
3
);
lfoPtr
.
p
->
logFileRec
=
currLogFile
;
lfoPtr
.
p
->
lfoState
=
LogFileOperationRecord
::
WRITE_PAGE_ZERO
;
return
;
...
...
@@ -12509,7 +12521,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
,
4
);
lfoPtr
.
p
->
lfoState
=
LogFileOperationRecord
::
INIT_WRITE_AT_END
;
return
;
}
//Dblqh::openFileInitLab()
...
...
@@ -12550,7 +12563,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
,
5
);
lfoPtr
.
p
->
lfoState
=
LogFileOperationRecord
::
WRITE_GCI_ZERO
;
return
;
}
//if
...
...
@@ -12852,17 +12865,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 +12917,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 +13025,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
,
6
);
if
(
wmoType
==
ZINIT
)
{
jam
();
lfoPtr
.
p
->
lfoState
=
LogFileOperationRecord
::
INIT_FIRST_PAGE
;
...
...
@@ -13049,7 +13059,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
,
7
);
lfoPtr
.
p
->
lfoState
=
LogFileOperationRecord
::
WRITE_INIT_MBYTE
;
}
//Dblqh::writeInitMbyte()
...
...
@@ -13059,13 +13070,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 +14547,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
,
12
);
return
;
break
;
case
LogPartRecord
:
:
LES_EXEC_LOG
:
...
...
@@ -14545,7 +14558,7 @@ void Dblqh::execSr(Signal* signal)
* ------------------------------------------------------------------- */
if
(
logFilePtr
.
p
->
currentLogpage
!=
logPartPtr
.
p
->
prevLogpage
)
{
jam
();
writeDirty
(
signal
);
writeDirty
(
signal
,
13
);
return
;
}
//if
break
;
...
...
@@ -14989,7 +15002,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
,
0
);
lfoPtr
.
p
->
lfoState
=
LogFileOperationRecord
::
WRITE_SR_INVALIDATE_PAGES
;
}
else
{
// We are done with invalidating. Finish start phase 3.4.
...
...
@@ -15937,7 +15951,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 +15994,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 +16399,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 +18057,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 +18098,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
,
8
);
seizeLogpage
(
signal
);
initLogpage
(
signal
);
logFilePtr
.
p
->
currentLogpage
=
logPagePtr
.
i
;
...
...
@@ -18133,7 +18156,7 @@ void Dblqh::writeNextLog(Signal* signal)
/* -------------------------------------------------- */
/* WE HAVE TO CHANGE LOG FILE */
/* -------------------------------------------------- */
completedLogPage
(
signal
,
ZLAST_WRITE_IN_FILE
);
completedLogPage
(
signal
,
ZLAST_WRITE_IN_FILE
,
9
);
if
(
wnlNextLogFilePtr
.
p
->
fileNo
==
0
)
{
jam
();
/* -------------------------------------------------- */
...
...
@@ -18152,7 +18175,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
,
10
);
twnlNewMbyte
=
logFilePtr
.
p
->
currentMbyte
+
1
;
}
//if
/* -------------------------------------------------- */
...
...
@@ -18520,3 +18543,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_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.hpp
View file @
6dbca028
...
...
@@ -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