2881 Olav Sandstaa 2008-10-24 [merge]
Merging.....
modified:
mysql-test/r/binlog_format_basic.result
mysql-test/t/binlog_format_basic.test
sql/mysqld.cc
storage/falcon/StorageVersion.h
=== modified file 'storage/falcon/TransactionManager.cpp'
=== modified file 'storage/falcon/TransactionManager.cpp'
--- a/storage/falcon/TransactionManager.cpp 2008-10-16 02:53:35 +0000
+++ b/storage/falcon/TransactionManager.cpp 2008-10-24 10:20:10 +0000
@@ -118,9 +118,23 @@
if (transaction->state == Available && transaction->dependencies == 0)
if (COMPARE_EXCHANGE(&transaction->state, Available, Initializing))
{
- transaction->initialize(connection, INTERLOCKED_INCREMENT(transactionSequence));
-
- return transaction;
+ // Check again that the dependencies are zero. The transaction
+ // object might have been re-use between the previous if-test
+ // and the actual change of state
+
+ if (transaction->dependencies != 0)
+ {
+ // Return the transaction object back to the list
+
+ transaction->state = Available;
+ }
+ else
+ {
+ ASSERT(transaction->dependencies == 0);
+ transaction->initialize(connection, INTERLOCKED_INCREMENT(transactionSequence));
+
+ return transaction;
+ }
}
sync.unlock();
| Thread |
|---|
| • bzr push into mysql-6.0-falcon-team branch (olav:2881) | Olav Sandstaa | 24 Oct |