diff --git a/sql/mdl.cc b/sql/mdl.cc index a883b21423e..6187d4515a3 100644 --- a/sql/mdl.cc +++ b/sql/mdl.cc @@ -1254,7 +1254,8 @@ MDL_context::wait_for_locks(MDL_request_list *mdl_requests) } if (!mdl_request) { - pthread_mutex_unlock(&LOCK_mdl); + /* As a side-effect MDL_EXIT_COND() unlocks LOCK_mdl. */ + MDL_EXIT_COND(m_thd, mysys_var, old_msg); break; } pthread_cond_wait(&COND_mdl, &LOCK_mdl); diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 99a0b33f213..61028f692b3 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -3693,6 +3693,7 @@ recover_from_failed_open_table_attempt(THD *thd, TABLE_LIST *table) case OT_WAIT: result= (thd->mdl_context.wait_for_locks(&m_mdl_requests) || tdc_wait_for_old_versions(thd, &m_mdl_requests)); + DBUG_ASSERT(thd->mysys_var->current_mutex == NULL); break; case OT_DISCOVER: {