mirror of
https://github.com/MariaDB/server.git
synced 2026-05-13 10:30:10 +02:00
MDEV-25503 InnoDB hangs on startup during recovery
InnoDB startup hangs if a DDL transaction needs to be rolled back and a recovered transaction on statistics tables exists. In that case, InnoDB should rollback the transaction which holds locks on innodb_table_stats or innodb_index_stats during trx_rollback_or_clean_recovered().
This commit is contained in:
parent
2b0d5b78c2
commit
b862377c3e
7 changed files with 69 additions and 2 deletions
|
|
@ -50,3 +50,18 @@ Warnings:
|
|||
Warning 1082 InnoDB: Table test/t1 contains 1 indexes inside InnoDB, which is different from the number of indexes 2 defined in the MariaDB
|
||||
Warning 1082 InnoDB: Table test/t1 contains 1 indexes inside InnoDB, which is different from the number of indexes 2 defined in the MariaDB
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-25503 InnoDB hangs on startup during recovery
|
||||
#
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB STATS_PERSISTENT=1;
|
||||
connect con1,localhost,root,,;
|
||||
BEGIN;
|
||||
DELETE FROM mysql.innodb_table_stats;
|
||||
connect con2,localhost,root,,;
|
||||
SET DEBUG_SYNC='inplace_after_index_build SIGNAL blocked WAIT_FOR ever';
|
||||
ALTER TABLE t1 FORCE;
|
||||
connection default;
|
||||
SET DEBUG_SYNC='now WAIT_FOR blocked';
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
DROP TABLE t1;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
|
||||
--source include/innodb_page_size.inc
|
||||
|
||||
--source include/have_debug_sync.inc
|
||||
|
||||
call mtr.add_suppression("Cannot find index f2 in InnoDB index dictionary.");
|
||||
call mtr.add_suppression("InnoDB indexes are inconsistent with what defined in .frm for table .*");
|
||||
call mtr.add_suppression("Table test/t1 contains 1 indexes inside InnoDB, which is different from the number of indexes 2 defined in the MariaDB .*");
|
||||
|
|
@ -69,3 +71,23 @@ disconnect con1;
|
|||
SHOW KEYS FROM t1;
|
||||
DROP TABLE t1;
|
||||
remove_files_wildcard $datadir/test #sql-*.frm;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-25503 InnoDB hangs on startup during recovery
|
||||
--echo #
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB STATS_PERSISTENT=1;
|
||||
connect (con1,localhost,root,,);
|
||||
BEGIN;
|
||||
DELETE FROM mysql.innodb_table_stats;
|
||||
|
||||
connect (con2,localhost,root,,);
|
||||
SET DEBUG_SYNC='inplace_after_index_build SIGNAL blocked WAIT_FOR ever';
|
||||
send ALTER TABLE t1 FORCE;
|
||||
|
||||
connection default;
|
||||
SET DEBUG_SYNC='now WAIT_FOR blocked';
|
||||
--let $shutdown_timeout=0
|
||||
--source include/restart_mysqld.inc
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
remove_files_wildcard $datadir/test #sql-*.frm;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue