Commit 056bab08 authored by Sergey Vojtovich's avatar Sergey Vojtovich

MDEV-12620 - set lock_wait_timeout = 1;flush tables with read lock;

             lock not released after timeout

Release GRL if FLUSH TABLES phase failed.
parent 58f87a41
...@@ -3100,3 +3100,18 @@ a ...@@ -3100,3 +3100,18 @@ a
# Connection default # Connection default
DROP TABLE m1, t1, t2; DROP TABLE m1, t1, t2;
SET DEBUG_SYNC= 'RESET'; SET DEBUG_SYNC= 'RESET';
#
# MDEV-12620 - set lock_wait_timeout = 1;flush tables with read lock;
# lock not released after timeout
#
CREATE TABLE t1(a INT) ENGINE=InnoDB;
SET debug_sync='open_tables_after_open_and_process_table SIGNAL ready WAIT_FOR go';
SELECT * FROM t1;
SET debug_sync='now WAIT_FOR ready';
SET lock_wait_timeout=1;
FLUSH TABLES WITH READ LOCK;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SET debug_sync='now SIGNAL go';
a
SET debug_sync='RESET';
DROP TABLE t1;
...@@ -4806,6 +4806,30 @@ disconnect con2; ...@@ -4806,6 +4806,30 @@ disconnect con2;
disconnect con3; disconnect con3;
--echo #
--echo # MDEV-12620 - set lock_wait_timeout = 1;flush tables with read lock;
--echo # lock not released after timeout
--echo #
CREATE TABLE t1(a INT) ENGINE=InnoDB;
SET debug_sync='open_tables_after_open_and_process_table SIGNAL ready WAIT_FOR go';
send SELECT * FROM t1;
connect (con1,localhost,root,,);
SET debug_sync='now WAIT_FOR ready';
# lock_wait_timeout should be 0 in 10.3, so that we don't have to wait at all
SET lock_wait_timeout=1;
--error ER_LOCK_WAIT_TIMEOUT
FLUSH TABLES WITH READ LOCK;
SET debug_sync='now SIGNAL go';
connection default;
reap;
SET debug_sync='RESET';
DROP TABLE t1;
disconnect con1;
# Check that all connections opened by test cases in this file are really # Check that all connections opened by test cases in this file are really
# gone so execution of other tests won't be affected by their presence. # gone so execution of other tests won't be affected by their presence.
--source include/wait_until_count_sessions.inc --source include/wait_until_count_sessions.inc
...@@ -253,7 +253,8 @@ bool reload_acl_and_cache(THD *thd, unsigned long long options, ...@@ -253,7 +253,8 @@ bool reload_acl_and_cache(THD *thd, unsigned long long options,
NOTE: my_error() has been already called by reopen_tables() within NOTE: my_error() has been already called by reopen_tables() within
close_cached_tables(). close_cached_tables().
*/ */
result= 1; thd->global_read_lock.unlock_global_read_lock(thd);
return 1;
} }
if (thd->global_read_lock.make_global_read_lock_block_commit(thd)) // Killed if (thd->global_read_lock.make_global_read_lock_block_commit(thd)) // Killed
......
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