mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug #10942 "deadlock with FLUSH TABLES WITH READ LOCK + STOP SLAVE"
don't allow STOP SLAVE if global read lock is in taken
This commit is contained in:
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user