MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:Kevin Lewis Date:January 10 2009 4:00pm
Subject:bzr commit into mysql-6.0-falcon-team branch (klewis:2968) Bug#39431
View as plain text  
#At file:///C:/Work/bzr/Merge/mysql-6.0-falcon-team/

 2968 Kevin Lewis	2009-01-10
      Bug#39431 - If the record number is not incremented before
      the continue, then a hang can occur because the 
      Table::syncObject is not given up and the in-process insert
      cannot continue.
modified:
  storage/falcon/Database.cpp
  storage/falcon/Interlock.h
  storage/falcon/Table.cpp

per-file messages:
  storage/falcon/Database.cpp
    CRLF -> LF
  storage/falcon/Interlock.h
    CRLF -> LF
  storage/falcon/Table.cpp
    Bug#39431 - If the record number is not incremented before
    the continue, then a hang can occur because the 
    Table::syncObject is not given up and the in-process insert
    cannot continue.
=== modified file 'storage/falcon/Database.cpp'
--- a/storage/falcon/Database.cpp	2009-01-09 21:49:16 +0000
+++ b/storage/falcon/Database.cpp	2009-01-10 16:00:02 +0000
@@ -1741,9 +1741,9 @@ void Database::scavenge()
 	
 	syncStmt.unlock();
 
-	// purgeTransactions will release records that are  attached to old 
-	// transactions, thus freeing up old invisible records to be pruned 
-	// and actually released.  It is not likely that the scavenger will 
+	// purgeTransactions will release records that are  attached to old 
+	// transactions, thus freeing up old invisible records to be pruned 
+	// and actually released.  It is not likely that the scavenger will 
 	// retire these freshly released base records, but disconnecting 
 	// pruneable records from their transactions is definitely needed.
 

=== modified file 'storage/falcon/Interlock.h'
--- a/storage/falcon/Interlock.h	2008-12-11 12:35:08 +0000
+++ b/storage/falcon/Interlock.h	2009-01-10 16:00:02 +0000
@@ -52,9 +52,9 @@
 /* Visual Studio 2003 and earlier do not have prototypes for atomic intrinsics */
 extern "C" 
 	{
-	long _InterlockedIncrement(long volatile *Addend);
+	long _InterlockedIncrement(long volatile *Addend);
 	long _InterlockedDecrement(long volatile *Addend);
-	long _InterlockedExchangeAdd(long volatile *Addend, long Value);
+	long _InterlockedExchangeAdd(long volatile *Addend, long Value);
 	long _InterlockedExchange(long volatile *Target,long Value);
 	long _InterlockedCompareExchange (long volatile *Target, long Value, long Comp);
 	}

=== modified file 'storage/falcon/Table.cpp'
--- a/storage/falcon/Table.cpp	2009-01-09 22:27:50 +0000
+++ b/storage/falcon/Table.cpp	2009-01-10 16:00:02 +0000
@@ -528,22 +528,25 @@ Record* Table::fetchNext(int32 start)
 				// Don't bother with a record that is half-way inserted.
 
 				if (record->state == recInserting)
+					{
+					recordNumber = bitNumber + 1;
 					continue;
+					}
 
 				break;
 				}
 
 			if (backloggedRecords && (record = backlogFetch(bitNumber)))
 				break;
-				
+
 			sync.unlock();
-			
+
 			for (int n = 0; (record = databaseFetch(bitNumber)); ++n)
 				{
 				if (insert(record, NULL, bitNumber))
 					{
 					record->poke();
-					
+
 					return record;
 					}
 

Thread
bzr commit into mysql-6.0-falcon-team branch (klewis:2968) Bug#39431Kevin Lewis10 Jan