List:Commits« Previous MessageNext Message »
From:U-ROWVWADEjas Date:December 2 2007 9:43pm
Subject:bk commit into 6.0 tree (jas:1.2720)
View as plain text  
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-ROWVWADEjas2 Dec