2766 Kevin Lewis 2009-08-18
Bug#46496 - There are a number of places in the Falcon code where
TransactionManager::committedTransactions.syncObject is held while
locking Transaction::syncRecords. So Transaction::thawAll() should
not hold Transaction::syncRecords while locking
TransactionManager::activeTransactions.syncObject,
which is often held while locking committedTransactions.syncObject.
It can cause a deadlock.
modified:
storage/falcon/Transaction.cpp
2765 Christopher Powers 2009-08-05
Bug#44670, "ALTER TABLE crashes in StorageTableShare::haveIndexes()"
Don't use StorageTableShare::haveIndexes() at all
@ storage/falcon/ha_falcon.cpp
Removed call to StorageTableShare::haveIndexes() in
StorageInterface::setIndexes(). The stripped-down version
of haveIndexes() incorrectly prevented index remapping
between Falcon and the server.
modified:
storage/falcon/ha_falcon.cpp
=== modified file 'storage/falcon/Transaction.cpp'
--- a/storage/falcon/Transaction.cpp 2009-07-28 15:53:09 +0000
+++ b/storage/falcon/Transaction.cpp 2009-08-18 22:01:40 +0000
@@ -1614,14 +1614,14 @@ bool Transaction::committedBefore(TransI
void Transaction::thawAll(void)
{
- Sync syncRec(&syncRecords,"Transaction::thawAll");
- syncRec.lock(Shared);
-
Sync syncActive(&database->transactionManager->activeTransactions.syncObject, "Transaction::thawAll");
syncActive.lock(Shared);
TransId oldestActiveTransaction = database->transactionManager->findOldestInActiveList();
syncActive.unlock();
+ Sync syncRec(&syncRecords,"Transaction::thawAll");
+ syncRec.lock(Shared);
+
int totalRecords = 0;
int totalThawed = 0;
Attachment: [text/bzr-bundle] bzr/kevin.lewis@sun.com-20090818220140-rbwhhsiet2f1rbpy.bundle
| Thread |
|---|
| • bzr push into mysql-6.0-falcon-team branch (kevin.lewis:2765 to 2766)Bug#46496 | Kevin Lewis | 19 Aug |