mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
A follow up for the previous patch, titled:
A code review comment for Bug#52289. Encapsulate the deadlock detection functionality into a visitor class... Remove a race introduced by omission: initialize iterators under a read lock on the object. sql/mdl.cc: Initialize iterators under a read lock on the object.
This commit is contained in:
@@ -1854,15 +1854,16 @@ bool MDL_lock::find_deadlock(MDL_ticket *waiting_ticket,
|
||||
MDL_ticket *ticket;
|
||||
MDL_context *src_ctx= waiting_ticket->get_ctx();
|
||||
bool result= TRUE;
|
||||
Ticket_iterator granted_it(m_granted);
|
||||
Ticket_iterator waiting_it(m_waiting);
|
||||
|
||||
|
||||
if (dvisitor->enter_node(src_ctx))
|
||||
return TRUE;
|
||||
|
||||
mysql_prlock_rdlock(&m_rwlock);
|
||||
|
||||
/* Must be initialized after taking a read lock. */
|
||||
Ticket_iterator granted_it(m_granted);
|
||||
Ticket_iterator waiting_it(m_waiting);
|
||||
|
||||
/*
|
||||
We do a breadth-first search first -- that is, inspect all
|
||||
edges of the current node, and only then follow up to the next
|
||||
|
Reference in New Issue
Block a user