Hi, Sergey! On Apr 23, Sergey Vojtovich wrote:
At lp:maria/10.0
------------------------------------------------------------ revno: 4155 revision-id: svoj@mariadb.org-20140423073406-o20n7jvwfjinvxxr parent: psergey@askmonty.org-20140418100754-v5b5sdqbavbcznh7 committer: Sergey Vojtovich <svoj@mariadb.org> branch nick: 10.0-mdev5792 timestamp: Wed 2014-04-23 11:34:06 +0400 message: MDEV-5792 - Deadlock between SELECTs from METADATA_LOCK_INFO and another I_S table
mdl_iterate() helper function (which is used by the plugin to iterate mdl locks) acquired mutexes in reverse order.
Fixed by iterating MDL locks in two stages: 1. Iterate locks hash under the protection of hash mutex, store all lock pointers in a thread local array and increment reference counter for the lock. 2. Iterate local array without protection of hash mutex, handle destroyed locks.
It somewhat echoes hack in MDL_map_partition::move_from_hash_to_lock_mutex.
Looks ok to me. Regards, Sergei