List:Commits« Previous MessageNext Message »
From:Vladislav Vaintroub Date:August 20 2008 3:01pm
Subject:bzr commit into mysql-6.0-falcon branch (vvaintroub:2778)
View as plain text  
#At file:///C:/bzr/mysql-6.0-falcon/

 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

=== 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 commit into mysql-6.0-falcon branch (vvaintroub:2778) Vladislav Vaintroub20 Aug