From ae293f9ac53fd1acdba2b79729561a0f8d3e41d0 Mon Sep 17 00:00:00 2001 From: "serg@serg.mylan" <> Date: Sat, 8 Oct 2005 14:46:04 +0200 Subject: [PATCH] Bug #10942 "deadlock with FLUSH TABLES WITH READ LOCK + STOP SLAVE" don't allow STOP SLAVE if global read lock is in taken --- mysql-test/r/rpl_flush_tables.result | 6 ++++++ mysql-test/t/rpl_flush_tables.test | 10 ++++++++++ sql/sql_parse.cc | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/rpl_flush_tables.result b/mysql-test/r/rpl_flush_tables.result index 70e4774a920..1bdb79fd0b1 100644 --- a/mysql-test/r/rpl_flush_tables.result +++ b/mysql-test/r/rpl_flush_tables.result @@ -38,3 +38,9 @@ master-bin.000001 461 Query 1 461 use `test`; rename table t1 to t5, t2 to t1 master-bin.000001 527 Query 1 527 use `test`; flush tables select * from t3; a +stop slave; +drop table t1; +flush tables with read lock; +start slave; +stop slave; +ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction diff --git a/mysql-test/t/rpl_flush_tables.test b/mysql-test/t/rpl_flush_tables.test index 04158aed9e0..378fa479f09 100644 --- a/mysql-test/t/rpl_flush_tables.test +++ b/mysql-test/t/rpl_flush_tables.test @@ -37,4 +37,14 @@ select * from t3; # Note that all this confusion may cause warnings 'table xx is open on rename' # in the .err files; these are not fatal and are not reported by mysql-test-run. +stop slave; +connection master; +drop table t1; +connection slave; +flush tables with read lock; +start slave; +sleep 1; +--error 1192 +stop slave; + # End of 4.1 tests diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 5d233fd7be0..3a538a7629b 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2601,7 +2601,7 @@ unsent_create_error: To prevent that, refuse SLAVE STOP if the client thread has locked tables */ - if (thd->locked_tables || thd->active_transaction()) + if (thd->locked_tables || thd->active_transaction() || thd->global_read_lock) { send_error(thd,ER_LOCK_OR_ACTIVE_TRANSACTION); break;