#At file:///home/lb200670/mysql/checkin/ based on revid:olav@stripped
2765 lars-erik.bjork@stripped 2009-08-25
This is a followup patch for bug #46083 - falcon_pagesize2K fails in
IndexRootPage::addIndexEntry() during recovery
Since the eternal loop should no longer occur after the previous
patch, I have decreased the loop count from 1000 to 10. This should
hopefully be enough to handle concurrency when splitting pages.
Ideally, we should either implement a solution that does not require
looping, or make the current code robust enough to have a for (;;) loop
If the assert no longer happens, we should also close bug#44542 -
Falcon needs a redesign of IndexRootPage::addIndexEntry
modified file 'storage/falcon/IndexRootPage.cpp'
* Changed loop count
* Removed a comment
=== modified file 'storage/falcon/IndexRootPage.cpp'
--- a/storage/falcon/IndexRootPage.cpp 2009-07-01 09:02:00 +0000
+++ b/storage/falcon/IndexRootPage.cpp 2009-08-25 08:39:00 +0000
@@ -117,11 +117,10 @@ bool IndexRootPage::addIndexEntry(Dbb *
Btn::printKey ("insertion key", key, 0, false);
Btn::printKey (" appended key", &searchKey, 0, false);
- // Multiple threads may attempt to update the same index. If necessary, make several attempts.
- // The loop number 1000 is klugde to silence the Bug#37056, until a proper solution is
- // implemented . that does not involve loops at all
- for (int n = 0; n < 1000; ++n)
+ // Multiple threads may attempt to update the same index.
+ // If necessary, make several attempts.
+ for (int n = 0; n < 10; ++n)
/* Find insert page and position on page */