Below is the list of changes that have just been committed into a local
6.0 repository of . When does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-12-02 15:42:48-05:00, jas@rowvwade. +3 -0
Debug in progress on intermittent recovery problem.
storage/falcon/SRLRecordLocator.cpp@stripped, 2007-12-02 15:42:38-05:00, jas@rowvwade. +3 -0
Made recovery pass1 and pass2 logging consistent.
storage/falcon/SRLSectionPage.cpp@stripped, 2007-12-02 15:42:39-05:00, jas@rowvwade. +8 -1
Made recovery pass1 and pass2 logging consistent.
storage/falcon/Section.cpp@stripped, 2007-12-02 15:42:39-05:00, jas@rowvwade. +6 -4
Check for wrong page type walking the second tree. Also check
for level overflow.
diff -Nrup a/storage/falcon/SRLRecordLocator.cpp b/storage/falcon/SRLRecordLocator.cpp
--- a/storage/falcon/SRLRecordLocator.cpp 2007-11-01 12:50:16 -04:00
+++ b/storage/falcon/SRLRecordLocator.cpp 2007-12-02 15:42:38 -05:00
@@ -71,6 +71,9 @@ void SRLRecordLocator::read()
void SRLRecordLocator::pass1()
{
+ if (log->tracePage == pageNumber)
+ print();
+
log->bumpPageIncarnation(pageNumber, tableSpaceId, objInUse);
}
diff -Nrup a/storage/falcon/SRLSectionPage.cpp b/storage/falcon/SRLSectionPage.cpp
--- a/storage/falcon/SRLSectionPage.cpp 2007-10-25 14:10:21 -04:00
+++ b/storage/falcon/SRLSectionPage.cpp 2007-12-02 15:42:39 -05:00
@@ -75,13 +75,19 @@ void SRLSectionPage::read()
sequence = getInt();
level = getInt();
+ /***
if ((log->tracePage && log->tracePage == pageNumber) ||
(log->tracePage && log->tracePage && log->tracePage ==
parentPage))
print();
+ ***/
}
void SRLSectionPage::pass1()
{
+ if ((pageNumber && log->tracePage == pageNumber) ||
+ (parentPage && log->tracePage == parentPage))
+ print();
+
log->bumpPageIncarnation(parentPage, tableSpaceId, objInUse);
if (pageNumber)
@@ -90,7 +96,8 @@ void SRLSectionPage::pass1()
void SRLSectionPage::pass2()
{
- if (pageNumber && log->tracePage == pageNumber)
+ if ((pageNumber && log->tracePage == pageNumber) ||
+ (parentPage && log->tracePage == parentPage))
print();
if (log->bumpPageIncarnation(parentPage, tableSpaceId, objInUse))
diff -Nrup a/storage/falcon/Section.cpp b/storage/falcon/Section.cpp
--- a/storage/falcon/Section.cpp 2007-12-02 13:19:59 -05:00
+++ b/storage/falcon/Section.cpp 2007-12-02 15:42:39 -05:00
@@ -48,6 +48,8 @@
static int stopSection = 40;
#endif
+static const int MAX_LEVELS = 4;
+
//#define VALIDATE_SPACE_SLOTS(page) page->validateSpaceSlots();
#ifndef VALIDATE_SPACE_SLOTS
@@ -182,7 +184,7 @@ Bdb* Section::getSectionPage(Dbb *dbb, i
lockTypes [0] = requestedLockType;
int level = -1;
- int slots[4];
+ int slots[MAX_LEVELS];
for (;;)
{
@@ -190,6 +192,7 @@ Bdb* Section::getSectionPage(Dbb *dbb, i
Bdb *bdb = dbb->fetchPage(root, PAGE_any, lockType);
BDB_HISTORY(bdb);
SectionPage *page = (SectionPage*) bdb->buffer;
+ ASSERT(page->pageType == PAGE_sections);
level = page->level;
// Knock off the simple case first
@@ -223,7 +226,6 @@ Bdb* Section::getSectionPage(Dbb *dbb, i
memcpy(newPage, page, dbb->pageSize);
newBdb->setPageHeader(newPage->pageType);
memset(page, 0, dbb->pageSize);
- //page->pageType = PAGE_sections;
bdb->setPageHeader(PAGE_sections);
page->section = newPage->section;
page->level = newPage->level + 1;
@@ -1101,6 +1103,7 @@ void Section::validate(Dbb *dbb, Validat
bool Section::decomposeSequence(Dbb *dbb, int32 sequence, int level, int *slots)
{
+ ASSERT(level <= MAX_LEVELS);
int seq = sequence;
for (int n = 0; n < level; ++n)
@@ -1278,8 +1281,7 @@ void Section::redoRecordLocatorPage(int
Bdb *locatorBdb = dbb->fakePage(pageNumber, PAGE_record_locator, 0);
BDB_HISTORY(locatorBdb);
RecordLocatorPage *locatorPage = (RecordLocatorPage*) locatorBdb->buffer;
- //locatorPage->pageType = PAGE_record_locator;
- locatorBdb->setPageHeader(PAGE_record_locator);
+ //locatorBdb->setPageHeader(PAGE_record_locator);
locatorPage->section = sectionId;
locatorPage->sequence = sequence;
locatorPage->maxLine = 0;
| Thread |
|---|
| • bk commit into 6.0 tree (jas:1.2720) | U-ROWVWADEjas | 2 Dec |