2778 Vladislav Vaintroub 2008-08-20
Fix a deadlock (reverse order of locks to active and committed transactions)
found by Kelly and Chris
modified:
storage/falcon/Transaction.cpp
2777 Vladislav Vaintroub 2008-08-20
aftermerge bzr config files fix
modified:
.bzr-mysql/default.conf
=== modified file 'storage/falcon/Transaction.cpp'
--- a/storage/falcon/Transaction.cpp 2008-08-14 11:18:42 +0000
+++ b/storage/falcon/Transaction.cpp 2008-08-20 15:01:21 +0000
@@ -300,17 +300,19 @@ void Transaction::commit()
database->flushInversion(this);
// Transfer transaction from active list to committed list, set committed state
+
Sync syncCommitted(&transactionManager->committedTransactions.syncObject,
"Transaction::commit(2)");
Sync syncActiveTransactions(&transactionManager->activeTransactions.syncObject,
"Transaction::commit(3)");
- syncCommitted.lock(Exclusive);
+
syncActiveTransactions.lock(Exclusive);
+ syncCommitted.lock(Exclusive);
transactionManager->activeTransactions.remove(this);
transactionManager->committedTransactions.append(this);
state = Committed;
- syncActiveTransactions.unlock();
syncCommitted.unlock();
+ syncActiveTransactions.unlock();
database->commit(this);
| Thread |
|---|
| • bzr push into mysql-6.0-falcon branch (vvaintroub:2777 to 2778) | Vladislav Vaintroub | 20 Aug |