1
0
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:
serg@serg.mylan
2005-10-08 14:46:04 +02:00
parent aa74affb19
commit ae293f9ac5
3 changed files with 17 additions and 1 deletions

View File

@ -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 master-bin.000001 527 Query 1 527 use `test`; flush tables
select * from t3; select * from t3;
a 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

View File

@ -37,4 +37,14 @@ select * from t3;
# Note that all this confusion may cause warnings 'table xx is open on rename' # 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. # 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 # End of 4.1 tests

View File

@ -2601,7 +2601,7 @@ unsent_create_error:
To prevent that, refuse SLAVE STOP if the To prevent that, refuse SLAVE STOP if the
client thread has locked tables 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); send_error(thd,ER_LOCK_OR_ACTIVE_TRANSACTION);
break; break;