#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#37587 | Kevin Lewis | 30 Jun |