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.
This commit is contained in:
parent
f29298d91c
commit
ec97ce952e
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user