MDEV-36771 Assertion 'bulk_insert == TRX_NO_BULK' failed in trx_t::assert_freed

- InnoDB fails to reset bulk_insert of a transaction while freeing
the transaction during shutting down of a server.
This commit is contained in:
Thirunarayanan Balathandayuthapani
2025-05-26 11:48:07 +05:30
parent 3da36fa130
commit db188083c3
3 changed files with 32 additions and 0 deletions

View File

@ -580,4 +580,20 @@ WHERE variable_name = 'innodb_bulk_operations';
bulk_operations
1
DROP TABLE t1;
call mtr.add_suppression("Found 1 prepared XA transactions");
#
# MDEV-36771 Assertion `bulk_insert == TRX_NO_BULK' failed
# in trx_t::assert_freed from innodb_shutdown
#
CREATE TABLE t1(f1 INT)ENGINE=InnoDB;
XA START 'a';
INSERT INTO t1 VALUES(1);
XA END 'a';
XA PREPARE 'a';
# restart
XA COMMIT 'a';
SELECT * FROM t1;
f1
1
DROP TABLE t1;
# End of 10.11 tests

View File

@ -638,4 +638,19 @@ SELECT variable_value-@old_bulk_op bulk_operations
FROM information_schema.global_status
WHERE variable_name = 'innodb_bulk_operations';
DROP TABLE t1;
call mtr.add_suppression("Found 1 prepared XA transactions");
--echo #
--echo # MDEV-36771 Assertion `bulk_insert == TRX_NO_BULK' failed
--echo # in trx_t::assert_freed from innodb_shutdown
--echo #
CREATE TABLE t1(f1 INT)ENGINE=InnoDB;
XA START 'a';
INSERT INTO t1 VALUES(1);
XA END 'a';
XA PREPARE 'a';
--source include/restart_mysqld.inc
XA COMMIT 'a';
SELECT * FROM t1;
DROP TABLE t1;
--echo # End of 10.11 tests

View File

@ -515,6 +515,7 @@ TRANSACTIONAL_TARGET void trx_free_at_shutdown(trx_t *trx)
ut_a(trx->magic_n == TRX_MAGIC_N);
ut_d(trx->apply_online_log = false);
trx->bulk_insert = 0;
trx->commit_state();
trx->release_locks();
trx->mod_tables.clear();