List:Commits« Previous MessageNext Message »
From:Olav Sandstaa Date:October 24 2008 10:45pm
Subject:bzr push into mysql-6.0-falcon-team branch (olav:2881)
View as plain text  
 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 Sandstaa24 Oct