#At file:///C:/Work/bzr/Merge/mysql-6.0-falcon-team/
2822 Kevin Lewis 2008-09-10
Various cleanup changes
modified:
storage/falcon/Cache.cpp
storage/falcon/Cache.h
storage/falcon/Index.cpp
storage/falcon/SerialLogFile.cpp
storage/falcon/Transaction.cpp
per-file messages:
storage/falcon/Cache.cpp
Cleanup code. Add blank lines, move comments.
syncHashTable[loop].setName does not need to be called twice. The second call at the
bottome of teh Cache constructor is correct because the deadlock detector eeds to see
each of these SyncObjects as the same one, because they can be randomly at runtime.
Be sure that each declaration of Sync has a unique location string for the
syncHandler.
storage/falcon/Cache.h
spacing
storage/falcon/Index.cpp
Add commented lines where we should start refCounting the pointer from the
Index::deferredIndexes queue into each of its deferredIndexes. Good practice, but not
required since the pointer from the DeferredIndex::index indicates whether there is a
pointer from the index back.
storage/falcon/SerialLogFile.cpp
white space cleanup
storage/falcon/Transaction.cpp
Clarify unique location strings for the syncHandler.
=== modified file 'storage/falcon/Cache.cpp'
--- a/storage/falcon/Cache.cpp 2008-09-09 20:57:57 +0000
+++ b/storage/falcon/Cache.cpp 2008-09-10 21:24:50 +0000
@@ -78,7 +78,7 @@ Cache::Cache(Database *db, int pageSz, i
unsigned int highBit;
for (highBit=0x01; highBit < (unsigned int)hashSz; highBit= highBit << 1) { }
- // if there are more than 4096 buckets then lets round down
+ // If there are more than 4096 buckets then lets round down
// else lets round up
if (highBit >= 0x00001000) {
// use power of two rounded down
@@ -98,18 +98,15 @@ Cache::Cache(Database *db, int pageSz, i
hashTable = new Bdb* [hashSize];
memset (hashTable, 0, sizeof (Bdb*) * hashSize);
#ifdef DEBUG_SYNC_HASH_TABLE_SIZE
- syncHashTable = new SyncObject [DEBUG_SYNC_HASH_TABLE_SIZE];
+ syncHashTable = new SyncObject [DEBUG_SYNC_HASH_TABLE_SIZE];
for (int loop = 0; loop < DEBUG_SYNC_HASH_TABLE_SIZE; loop ++)
syncHashTable[loop].setName("Cache::syncHashTable");
#else /* DEBUG_SYNC_HASH_TABLE_SIZE */
- syncHashTable = new SyncObject [hashSize];
+ syncHashTable = new SyncObject [hashSize];
for (int loop = 0; loop < hashSize; loop ++)
- {
- char tmpName[128];
- snprintf(tmpName,120,"Cache::syncHashTable[%d]",loop);
- syncHashTable[loop].setName(tmpName);
- }
+ syncHashTable[loop].setName("Cache::syncHashTable");
#endif /* DEBUG_SYNC_HASH_TABLE_SIZE */
+
sectorCache = new SectorCache(sectorCacheSize / SECTOR_BUFFER_SIZE, pageSize);
uint64 n = ((uint64) pageSize * numberBuffers + cacheHunkSize - 1) / cacheHunkSize;
@@ -300,8 +297,9 @@ Bdb* Cache::fetchPage(Dbb *dbb, int32 pa
int slot = PAGENUM_2_SLOT(pageNumber);
Sync lockHash (&syncHashTable[PAGENUM_2_LOCK_INDEX(pageNumber, slot)],
"Cache::fetchPage");
+ // Assume we'll be inserting this new BDB. Set new page number. */
+
bdbAvailable = getFreeBuffer();
- /* assume we'll be inserting this new BDB. Set new page number. */
bdbAvailable->pageNumber = pageNumber;
bdbAvailable->dbb = dbb;
@@ -394,6 +392,7 @@ Bdb* Cache::fakePage(Dbb *dbb, int32 pag
#endif
/* If we already have a buffer for this, we're done */
+
bdb = lockFindBdbIncrementUseCount(dbb, pageNumber);
if (!bdb)
{
@@ -408,8 +407,9 @@ Bdb* Cache::fakePage(Dbb *dbb, int32 pag
int slot = PAGENUM_2_SLOT(pageNumber);
Sync lockHash (&syncHashTable[PAGENUM_2_LOCK_INDEX(pageNumber, slot)],
"Cache::fetchPage");
+ // Assume we'll be inserting this new BDB. Set new page number.
+
bdbAvailable = getFreeBuffer();
- /* assume we'll be inserting this new BDB. Set new page number. */
bdbAvailable->pageNumber = pageNumber;
bdbAvailable->dbb = dbb;
@@ -519,7 +519,7 @@ void Cache::moveToHeadAlreadyLocked(Bdb
Bdb* Cache::getFreeBuffer(void)
{
- Sync bufferQueueLock (&bufferQueue.syncObject, "Cache::getFreeBuffer");
+ Sync bufferQueueLock (&bufferQueue.syncObject, "Cache::getFreeBuffer(queue)");
unsigned int count;
Bdb *bdb;
@@ -557,6 +557,7 @@ Bdb* Cache::getFreeBuffer(void)
#endif // CHECK_STALLED_BDB
}
}
+
if (!bdb)
// find a candidate that is NOT in use, could be dirty
for (bdb = bufferQueue.last; bdb; bdb = bdb->prior)
@@ -574,7 +575,7 @@ Bdb* Cache::getFreeBuffer(void)
if (bdb->pageNumber >= 0)
{
int slotRemove = PAGENUM_2_SLOT(bdb->pageNumber);
- Sync lockHashRemove (&syncHashTable[PAGENUM_2_LOCK_INDEX(bdb->pageNumber,
slotRemove)], "Cache::getFreeBuffer");
+ Sync lockHashRemove (&syncHashTable[PAGENUM_2_LOCK_INDEX(bdb->pageNumber,
slotRemove)], "Cache::getFreeBuffer(remove)");
lockHashRemove.lock(Exclusive);
if (bdb->useCount != 1)
@@ -849,9 +850,7 @@ bool Cache::hasDirtyPages(Dbb *dbb)
for (Bdb *bdb = firstDirty; bdb; bdb = bdb->nextDirty)
if (bdb->dbb == dbb)
- {
return true;
- }
return false;
}
@@ -915,9 +914,9 @@ void Cache::ioThread(void* arg)
void Cache::ioThread(void)
{
- Sync syncThread(&syncThreads, "Cache::ioThread");
+ Sync syncThread(&syncThreads, "Cache::ioThread(threads)");
syncThread.lock(Shared);
- Sync flushLock(&syncFlush, "Cache::ioThread");
+ Sync flushLock(&syncFlush, "Cache::ioThread(flush)");
Priority priority(database->ioScheduler);
Thread *thread = Thread::getThread("Cache::ioThread");
UCHAR *rawBuffer = new UCHAR[ASYNC_BUFFER_SIZE];
=== modified file 'storage/falcon/Cache.h'
--- a/storage/falcon/Cache.h 2008-09-02 16:08:11 +0000
+++ b/storage/falcon/Cache.h 2008-09-10 21:24:50 +0000
@@ -87,21 +87,21 @@ public:
SyncObject syncObject;
PageWriter *pageWriter;
- Database *database;
+ Database *database;
int numberBuffers;
- bool panicShutdown;
- bool flushing;
+ bool panicShutdown;
+ bool flushing;
protected:
- void moveToHead (Bdb *bdb);
- void moveToHeadAlreadyLocked (Bdb *bdb);
+ void moveToHead (Bdb *bdb);
+ void moveToHeadAlreadyLocked (Bdb *bdb);
Bdb* getFreeBuffer(void);
Bdb* findBdb(Dbb* dbb, int32 pageNumber, int slot);
Bdb* findBdb(Dbb* dbb, int32 pageNumber);
Bdb* lockFindBdbIncrementUseCount(Dbb* dbb, int32 pageNumber);
Bdb* lockFindBdbIncrementUseCount(int32 pageNumber, int slot);
- int64 flushArg;
+ int64 flushArg;
Bdb *bdbs;
Bdb *endBdbs;
Queue<Bdb> bufferQueue;
@@ -110,7 +110,7 @@ protected:
Bdb *firstDirty;
Bdb *lastDirty;
Bitmap *flushBitmap;
- char **bufferHunks;
+ char **bufferHunks;
Thread **ioThreads;
SectorCache *sectorCache;
SyncObject syncFlush;
=== modified file 'storage/falcon/Index.cpp'
--- a/storage/falcon/Index.cpp 2008-08-19 03:33:01 +0000
+++ b/storage/falcon/Index.cpp 2008-09-10 21:24:50 +0000
@@ -123,6 +123,7 @@ Index::~Index()
{
ASSERT(deferredIndex->index == this);
deferredIndex->detachIndex();
+// deferredIndex->releaseRef();
}
}
@@ -277,6 +278,7 @@ DeferredIndex *Index::getDeferredIndex(T
deferredIndex = new DeferredIndex(this, transaction);
sync.lock(Exclusive);
deferredIndexes.append(deferredIndex);
+// deferredIndex->addRef();
sync.unlock();
transaction->add(deferredIndex);
@@ -843,6 +845,7 @@ void Index::detachDeferredIndex(Deferred
Sync sync(&deferredIndexes.syncObject, "Index::detachDeferredIndex(1)");
sync.lock(Exclusive);
deferredIndexes.remove(deferredIndex);
+// deferredIndex->releaseRef();
sync.unlock();
if ( (database->configuration->useDeferredIndexHash)
=== modified file 'storage/falcon/SerialLogFile.cpp'
--- a/storage/falcon/SerialLogFile.cpp 2008-09-05 22:36:19 +0000
+++ b/storage/falcon/SerialLogFile.cpp 2008-09-10 21:24:50 +0000
@@ -128,7 +128,7 @@ void SerialLogFile::open(JString filenam
if (create)
- handle = ::open(filename, O_RDWR | O_BINARY | O_CREAT|O_EXCL, S_IRUSR | S_IWUSR |
S_IRGRP | S_IWGRP);
+ handle = ::open(filename, O_RDWR | O_BINARY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR |
S_IRGRP | S_IWGRP);
else
handle = ::open(filename, O_RDWR | O_BINARY);
=== modified file 'storage/falcon/Transaction.cpp'
--- a/storage/falcon/Transaction.cpp 2008-09-10 19:51:03 +0000
+++ b/storage/falcon/Transaction.cpp 2008-09-10 21:24:50 +0000
@@ -397,7 +397,7 @@ void Transaction::rollback()
// Rollback pending record versions from newest to oldest in case
// there are multiple record versions on a prior record chain
- Sync syncRec(&syncRecords, "Transaction::rollback(1.5)");
+ Sync syncRec(&syncRecords, "Transaction::rollback(records)");
syncRec.lock(Exclusive);
while (firstRecord)
@@ -451,7 +451,7 @@ void Transaction::rollback()
xidLength = 0;
}
- Sync syncActiveTransactions (&transactionManager->activeTransactions.syncObject,
"Transaction::rollback(2)");
+ Sync syncActiveTransactions (&transactionManager->activeTransactions.syncObject,
"Transaction::rollback(active)");
syncActiveTransactions.lock (Exclusive);
++transactionManager->rolledBack;
| Thread |
|---|
| • bzr commit into mysql-6.0-falcon branch (klewis:2822) | Kevin Lewis | 10 Sep |