#At file:///C:/bzr/mysql-6.0-falcon/
2731 Vladislav Vaintroub 2008-07-11
Bug#37725 : assertion in transaction::waitForTransaction
The patch fixes the problem where Transaction::waitingFor is not reset
if LOCK_TIMEOUT exception is thrown by Sync::timedout().
modified:
storage/falcon/Transaction.cpp
per-file messages:
storage/falcon/Transaction.cpp
Always reset Transaction::waitingFor to NULL
=== modified file 'storage/falcon/Transaction.cpp'
--- a/storage/falcon/Transaction.cpp 2008-06-17 18:34:46 +0000
+++ b/storage/falcon/Transaction.cpp 2008-07-11 10:23:03 +0000
@@ -1023,8 +1023,17 @@ State Transaction::waitForTransaction(Tr
if (!(*deadlock))
{
- syncActiveTransactions.unlock();
- transaction->waitForTransaction();
+ try
+ {
+ syncActiveTransactions.unlock();
+ transaction->waitForTransaction();
+ }
+ catch(...)
+ {
+ if (!COMPARE_EXCHANGE_POINTER(&waitingFor, transaction, NULL))
+ FATAL("waitingFor was not %p",transaction);
+ throw;
+ }
}
if (!COMPARE_EXCHANGE_POINTER(&waitingFor, transaction, NULL))
| Thread |
|---|
| • bzr commit into mysql-6.0-falcon branch (vvaintroub:2731) Bug#37725 | Vladislav Vaintroub | 11 Jul |