From: Date: June 30 2008 6:52pm Subject: bzr commit into mysql-6.0-falcon branch (klewis:2722) Bug#37587 List-Archive: http://lists.mysql.com/commits/48744 X-Bug: 37587 Message-Id: <200806301652.m5UGqWI6003172@mail.mysql.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit #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);