MDEV-254: Server hang with FLUSH TABLES WITH READ LOCK AND DISABLE CHECKPOINT
The code to re-enable checkpointing after UNLOCK TABLES was lost in the 5.5 merge, so re-add it back in.
This commit is contained in:
parent
0887c6b9d3
commit
ddd3e261b2
5
mysql-test/r/flush-innodb.result
Normal file
5
mysql-test/r/flush-innodb.result
Normal file
@ -0,0 +1,5 @@
|
||||
FLUSH TABLES WITH READ LOCK AND DISABLE CHECKPOINT;
|
||||
UNLOCK TABLES;
|
||||
CREATE TABLE t1 ( m MEDIUMTEXT ) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES ( REPEAT('i',1048576) );
|
||||
DROP TABLE t1;
|
9
mysql-test/t/flush-innodb.test
Normal file
9
mysql-test/t/flush-innodb.test
Normal file
@ -0,0 +1,9 @@
|
||||
--source include/have_innodb.inc
|
||||
|
||||
# MDEV-254: Server hang with FLUSH TABLES WITH READ LOCK AND DISABLE CHECKPOINT
|
||||
FLUSH TABLES WITH READ LOCK AND DISABLE CHECKPOINT;
|
||||
UNLOCK TABLES;
|
||||
CREATE TABLE t1 ( m MEDIUMTEXT ) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES ( REPEAT('i',1048576) );
|
||||
|
||||
DROP TABLE t1;
|
@ -1041,6 +1041,15 @@ void Global_read_lock::unlock_global_read_lock(THD *thd)
|
||||
|
||||
DBUG_ASSERT(m_mdl_global_shared_lock && m_state);
|
||||
|
||||
if (thd->global_disable_checkpoint)
|
||||
{
|
||||
thd->global_disable_checkpoint= 0;
|
||||
if (!--global_disable_checkpoint)
|
||||
{
|
||||
ha_checkpoint_state(0); // Enable checkpoints
|
||||
}
|
||||
}
|
||||
|
||||
if (m_mdl_blocks_commits_lock)
|
||||
{
|
||||
thd->mdl_context.release_lock(m_mdl_blocks_commits_lock);
|
||||
|
Loading…
x
Reference in New Issue
Block a user