From: Dmitry Lenev Date: October 26 2010 6:50pm Subject: bzr commit into mysql-5.5-runtime branch (Dmitry.Lenev:3183) List-Archive: http://lists.mysql.com/commits/121963 Message-Id: <20101026185037.C71312F0E23@mockturtle> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0640244089==" --===============0640244089== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/dlenev/src/bzr/mysql-5.5-rt-grl/ based on revid:dmitry.lenev@stripped 3183 Dmitry Lenev 2010-10-26 More changes to draft patch refactoring global read lock implementation. Makes GRL yet another type of metadata lock and thus exposes it to deadlock detector in MDL subsystem. Solves bugs #54673 "It takes too long to get readlock for 'FLUSH TABLES WITH READ LOCK'" and #57006 "Deadlock between HANDLER and FLUSH TABLES WITH READ LOCK". Work-in-progress. Add separate thread state name for waiting on commit blocker lock. modified: mysql-test/include/check_ftwrl_incompatible.inc mysql-test/t/flush_block_commit.test mysql-test/t/flush_read_lock.test mysql-test/t/flush_read_lock_kill.test sql/mdl.cc === modified file 'mysql-test/include/check_ftwrl_incompatible.inc' --- a/mysql-test/include/check_ftwrl_incompatible.inc 2010-10-21 19:24:20 +0000 +++ b/mysql-test/include/check_ftwrl_incompatible.inc 2010-10-26 18:50:18 +0000 @@ -68,7 +68,8 @@ connection $con_aux1; --enable_query_log let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and + where (state = "Waiting for global read lock" or + state = "Waiting for commit lock") and info = "$statement"; --source include/wait_condition.inc --disable_result_log @@ -115,7 +116,8 @@ connection $con_aux2; --enable_query_log let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and + where (state = "Waiting for global read lock" or + state = "Waiting for commit lock") and info = "flush tables with read lock"; --source include/wait_condition.inc --disable_result_log === modified file 'mysql-test/t/flush_block_commit.test' --- a/mysql-test/t/flush_block_commit.test 2010-10-18 12:33:49 +0000 +++ b/mysql-test/t/flush_block_commit.test 2010-10-26 18:50:18 +0000 @@ -39,7 +39,7 @@ connection con2; --echo # Wait until COMMIT gets blocked. let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and info = "COMMIT"; + where state = "Waiting for commit lock" and info = "COMMIT"; --source include/wait_condition.inc --echo # Verify that 'con1' was blocked and data did not move. SELECT * FROM t1; === modified file 'mysql-test/t/flush_read_lock.test' --- a/mysql-test/t/flush_read_lock.test 2010-10-26 14:19:27 +0000 +++ b/mysql-test/t/flush_read_lock.test 2010-10-26 18:50:18 +0000 @@ -265,7 +265,7 @@ connection $con_aux1; --echo # Wait until COMMIT is blocked. let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and + where state = "Waiting for commit lock" and info = "commit"; --source include/wait_condition.inc unlock tables; @@ -290,7 +290,7 @@ connection $con_aux2; --echo # Wait until FTWRL is blocked. let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and + where state = "Waiting for commit lock" and info = "flush tables with read lock"; --source include/wait_condition.inc set debug_sync='now SIGNAL go'; @@ -1516,7 +1516,7 @@ connection $con_aux1; --echo # Wait until SET AUTOCOMMIT=1 is blocked. let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and + where state = "Waiting for commit lock" and info = "set autocommit= 1"; --source include/wait_condition.inc unlock tables; @@ -1541,7 +1541,7 @@ connection $con_aux2; --echo # Wait until FTWRL is blocked. let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and + where state = "Waiting for commit lock" and info = "flush tables with read lock"; --source include/wait_condition.inc set debug_sync='now SIGNAL go'; @@ -1734,7 +1734,7 @@ connection $con_aux1; --echo # Wait until XA COMMIT is blocked. let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and + where state = "Waiting for commit lock" and info = "xa commit 'test1'"; --source include/wait_condition.inc unlock tables; @@ -1761,7 +1761,7 @@ connection $con_aux2; --echo # Wait until FTWRL is blocked. let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and + where state = "Waiting for commit lock" and info = "flush tables with read lock"; --source include/wait_condition.inc set debug_sync='now SIGNAL go'; @@ -1846,7 +1846,7 @@ connection $con_aux1; --echo # Check that ANALYZE TABLE is blocked. let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and + where state = "Waiting for commit lock" and info = "analyze table t3_trans"; --source include/wait_condition.inc unlock tables; @@ -1917,7 +1917,7 @@ connection $con_aux1; --echo # Check that ALTER TABLE is blocked. let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and + where state = "Waiting for commit lock" and info = "alter table t3_temp_trans drop column c1"; --source include/wait_condition.inc unlock tables; @@ -1950,7 +1950,7 @@ connection $con_aux1; --echo # Check that CHECK TABLE is blocked. let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and + where state = "Waiting for commit lock" and info = "check table t1_base"; --source include/wait_condition.inc unlock tables; @@ -1972,7 +1972,7 @@ connection $con_aux1; --echo # Check that ALTER TABLE is blocked. let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" and + where state = "Waiting for commit lock" and info = "alter table t1_temp add column c1 int"; --source include/wait_condition.inc unlock tables; === modified file 'mysql-test/t/flush_read_lock_kill.test' --- a/mysql-test/t/flush_read_lock_kill.test 2010-10-18 12:33:49 +0000 +++ b/mysql-test/t/flush_read_lock_kill.test 2010-10-26 18:50:18 +0000 @@ -54,7 +54,7 @@ SELECT ((@id := kill_id) - kill_id) FROM --echo # to active COMMIT let $wait_condition= select count(*) = 1 from information_schema.processlist - where state = "Waiting for global read lock" + where state = "Waiting for commit lock" and info = "flush tables with read lock"; --source include/wait_condition.inc === modified file 'sql/mdl.cc' --- a/sql/mdl.cc 2010-10-25 15:16:12 +0000 +++ b/sql/mdl.cc 2010-10-26 18:50:18 +0000 @@ -85,7 +85,7 @@ const char *MDL_key::m_namespace_to_wait "Waiting for stored procedure metadata lock", "Waiting for trigger metadata lock", "Waiting for event metadata lock", - "Waiting for global read lock" + "Waiting for commit lock" }; static bool mdl_initialized= 0; --===============0640244089== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/dmitry.lenev@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: dmitry.lenev@stripped # target_branch: file:///home/dlenev/src/bzr/mysql-5.5-rt-grl/ # testament_sha1: 2f76e836d207c5b1c990ae1c0f73e666075711f6 # timestamp: 2010-10-26 22:50:37 +0400 # base_revision_id: dmitry.lenev@stripped\ # 2mtdgnczu2yo9dsh # # Begin bundle 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 iKkiF0z3HKYB5i7kinChISQ/jsI= --===============0640244089==--