Skip to content

Commit

Permalink
MDEV-25708 THD::cleanup(): Assertion `!mdl_context.has_locks()' failed
Browse files Browse the repository at this point in the history
The reason was that WSREP code in mysql_create_or_drop_trigge() did
jump to an exit label that did not do proper cleanup of state.
Fixed by ensuring that also WSREP code goes trough the cleanup process.
  • Loading branch information
montywi committed May 23, 2021
1 parent 2c90dc0 commit 15214a4
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions sql/sql_trigger.cc
Expand Up @@ -457,7 +457,6 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
thd->variables.lock_wait_timeout))
goto end;


if (!create)
{
bool if_exists= thd->lex->if_exists();
Expand Down Expand Up @@ -565,7 +564,7 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
#ifdef WITH_WSREP
if (WSREP(thd) &&
!wsrep_should_replicate_ddl(thd, table->s->db_type()->db_type))
goto wsrep_error_label;
goto end;
#endif

/* Later on we will need it to downgrade the lock */
Expand Down Expand Up @@ -652,9 +651,11 @@ bool mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create)
thd->mdl_context.release_lock(mdl_request_for_trn.ticket);

DBUG_RETURN(result);

#ifdef WITH_WSREP
wsrep_error_label:
DBUG_RETURN(true);
DBUG_ASSERT(result == 1);
goto end;
#endif
}

Expand Down

0 comments on commit 15214a4

Please sign in to comment.