List:Commits« Previous MessageNext Message »
From:Kevin Lewis Date:June 30 2008 6:52pm
Subject:bzr commit into mysql-6.0-falcon branch (klewis:2722) Bug#37587
View as plain text  
#At bzr+ssh://bk-internal.mysql.com/bzrroot/server/mysql-6.0-falcon/

 2722 Kevin Lewis	2008-06-30
      Bug#37587 - Release SerialLogTransaction::pending.syncObject just before
      waiting for SerialLog::syncSerializeGophers instead of just after that. 
      This avoids a 3 way deadlock
modified:
  storage/falcon/Gopher.cpp

per-file messages:
  storage/falcon/Gopher.cpp
    Bug#37587 - Release SerialLogTransaction::pending.syncObject just before  waiting for
SerialLog::syncSerializeGophers instead of just after that. This avoids a 3 way deadlock
=== modified file 'storage/falcon/Gopher.cpp'
--- a/storage/falcon/Gopher.cpp	2008-06-17 17:41:54 +0000
+++ b/storage/falcon/Gopher.cpp	2008-06-30 16:51:55 +0000
@@ -64,16 +64,14 @@ void Gopher::gopherThread(void)
 		
 		SerialLogTransaction *transaction = log->pending.first;
 		log->pending.remove(transaction);
-		
-		Sync serializeGophers(&log->syncSerializeGophers, "Gopher::gopherThread(4)");
+		sync.unlock();
 
+		Sync serializeGophers(&log->syncSerializeGophers, "Gopher::gopherThread(4)");
 		if (transaction->allowConcurrentGophers)
 			serializeGophers.lock(Shared);
 		else
 			serializeGophers.lock(Exclusive);
 
-		sync.unlock();
-
 		transaction->doAction();
 
 		sync.lock(Exclusive);

Thread
bzr commit into mysql-6.0-falcon branch (klewis:2722) Bug#37587Kevin Lewis30 Jun