Commit b68f1d84 authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-21217 innodb_force_recovery=2 may wrongly abort rollback

trx_roll_must_shutdown(): Correct the condition that detects
the start of shutdown.
parent 2fd2fd77
FLUSH TABLES;
#
# MDEV-21217 innodb_force_recovery=2 may wrongly abort the rollback
# of recovered transactions
#
connect con0,localhost,root;
CREATE TABLE t0 (a INT PRIMARY KEY) ENGINE=InnoDB;
BEGIN;
INSERT INTO t0 SELECT * FROM seq_1_to_1000;
connection default;
SET GLOBAL innodb_flush_log_at_trx_commit=1;
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
disconnect con0;
connection default;
SELECT * FROM t0 LOCK IN SHARE MODE;
a
DROP TABLE t0,t1;
--source include/have_innodb.inc
--source include/have_sequence.inc
# We will kill and restart the server.
--source include/not_embedded.inc
FLUSH TABLES;
--echo #
--echo # MDEV-21217 innodb_force_recovery=2 may wrongly abort the rollback
--echo # of recovered transactions
--echo #
connect (con0,localhost,root);
CREATE TABLE t0 (a INT PRIMARY KEY) ENGINE=InnoDB;
# Create enough undo log so that the rollback may take enough time.
BEGIN;
INSERT INTO t0 SELECT * FROM seq_1_to_1000;
connection default;
# Persist the above incomplete transaction.
SET GLOBAL innodb_flush_log_at_trx_commit=1;
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
--let $restart_parameters= --innodb-force-recovery=2
--let $shutdown_timeout=0
--source include/restart_mysqld.inc
--let $restart_parameters=
--let $shutdown_timeout=
disconnect con0;
connection default;
# If the rollback was aborted, we would end up in a lock wait here.
SELECT * FROM t0 LOCK IN SHARE MODE;
DROP TABLE t0,t1;
......@@ -750,7 +750,7 @@ trx_roll_must_shutdown()
ut_ad(trx_state_eq(trx, TRX_STATE_ACTIVE));
if (trx_get_dict_operation(trx) == TRX_DICT_OP_NONE
&& !srv_is_being_started
&& srv_shutdown_state != SRV_SHUTDOWN_NONE
&& !srv_undo_sources && srv_fast_shutdown) {
return true;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment