MENT-2038 Assert WSREP(thd) fails in wsrep_restore_kill_after_commit

Fix wrong assertion: function wsrep_restore_kill_after_commit()
asserts `WSREP(thd)`, however for the caller (wsrep_after_statement())
it is enough that the THD  has an active transaction. Fixed the
assertion accordingly.

Signed-off-by: Julius Goryavsky <julius.goryavsky@mariadb.com>
This commit is contained in:
Daniele Sciascia 2024-02-22 09:17:29 +01:00 committed by Julius Goryavsky
parent 479a5832f0
commit c43db43a7c
3 changed files with 20 additions and 1 deletions

View file

@ -0,0 +1,7 @@
connection node_2;
connection node_1;
SET SESSION wsrep_on=OFF;
BEGIN;
BEGIN;
COMMIT;
SET SESSION wsrep_on=ON;

View file

@ -0,0 +1,12 @@
#
# MENT-2038: Assertion `(thd && (WSREP_PROVIDER_EXISTS_ && thd->variables.wsrep_on))'
# failed in void wsrep_restore_kill_after_commit(THD*)
#
--source include/galera_cluster.inc
SET SESSION wsrep_on=OFF;
BEGIN;
BEGIN; # If bug is present, assertion triggers during implicit commit
COMMIT;
SET SESSION wsrep_on=ON;

View file

@ -496,7 +496,7 @@ void wsrep_backup_kill_for_commit(THD *thd)
void wsrep_restore_kill_after_commit(THD *thd)
{
DBUG_ASSERT(WSREP(thd));
DBUG_ASSERT(wsrep_is_active(thd));
mysql_mutex_assert_owner(&thd->LOCK_thd_kill);
thd->killed= thd->wsrep_abort_by_kill;
my_free(thd->killed_err);