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);
|
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)
|
if (m_mdl_blocks_commits_lock)
|
||||||
{
|
{
|
||||||
thd->mdl_context.release_lock(m_mdl_blocks_commits_lock);
|
thd->mdl_context.release_lock(m_mdl_blocks_commits_lock);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user