Bug #25044 | ALTER TABLE ... ENABLE KEYS acquires global 'opening tables' lock. | ||
---|---|---|---|
Submitted: | 13 Dec 2006 16:09 | Modified: | 8 Feb 2007 18:02 |
Reporter: | Domas Mituzas | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Locking | Severity: | S2 (Serious) |
Version: | 5.0.32-bk, 5.1.14-bk | OS: | Any |
Assigned to: | Dmitry Lenev | CPU Architecture: | Any |
Tags: | bfsm_2006_12_21, regression, rt_q1_2007 |
[13 Dec 2006 16:09]
Domas Mituzas
[27 Dec 2006 19:58]
Andrey Hristov
I thought it could be related to bug#24395 and bug#24219, but they are noted to be part of 5.0.32 and not 5.0.30 . But it should be checked whether they actually cause the regression.
[4 Jan 2007 8:18]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/17604 ChangeSet@1.2354, 2007-01-04 11:19:31+03:00, dlenev@mockturtle.local +3 -0 Proposed fix for bug #25044 "ALTER TABLE ... ENABLE KEYS acquires global 'opening tables' lock." Execution of ALTER TABLE ... ENABLE KEYS on a table (which can take rather long time) prevented concurrent execution of all statements using tables. The problem was caused by the fact that we were holding LOCK_open mutex during whole duration of this statement and particularly during call to handler::enable_indexes(). This behavior was introduced as part of the fix for bug 14262 "SP: DROP PROCEDURE|VIEW (maybe more) write to binlog too late (race cond)" The patch simply restores old behavior. Note that we can safely do this as this operation takes exclusive lock (similar to name-lock) which blocks both DML and DDL on the table being altered. Question for reviewers is marked by QQ.
[19 Jan 2007 13:51]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/18435 ChangeSet@1.2354, 2007-01-19 16:22:10+03:00, dlenev@mockturtle.local +5 -0 Fix for bug #25044 "ALTER TABLE ... ENABLE KEYS acquires global 'opening tables' lock." Execution of ALTER TABLE ... ENABLE KEYS on a table (which can take rather long time) prevented concurrent execution of all statements using tables. The problem was caused by the fact that we were holding LOCK_open mutex during whole duration of this statement and particularly during call to handler::enable_indexes(). This behavior was introduced as part of the fix for bug 14262 "SP: DROP PROCEDURE|VIEW (maybe more) write to binlog too late (race cond)" The patch simply restores old behavior. Note that we can safely do this as this operation takes exclusive lock (similar to name-lock) which blocks both DML and DDL on the table being altered. It also introduces mysql-test/include/wait_slave_status.inc helper script which is used to make test-case for this bug robust enough.
[19 Jan 2007 18:53]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/18469 ChangeSet@1.2354, 2007-01-19 21:54:10+03:00, dlenev@mockturtle.local +5 -0 Fix for bug #25044 "ALTER TABLE ... ENABLE KEYS acquires global 'opening tables' lock." Execution of ALTER TABLE ... ENABLE KEYS on a table (which can take rather long time) prevented concurrent execution of all statements using tables. The problem was caused by the fact that we were holding LOCK_open mutex during whole duration of this statement and particularly during call to handler::enable_indexes(). This behavior was introduced as part of the fix for bug 14262 "SP: DROP PROCEDURE|VIEW (maybe more) write to binlog too late (race cond)" The patch simply restores old behavior. Note that we can safely do this as this operation takes exclusive lock (similar to name-lock) which blocks both DML and DDL on the table being altered. It also introduces mysql-test/include/wait_show_pattern.inc helper script which is used to make test-case for this bug robust enough.
[19 Jan 2007 20:15]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/18476 ChangeSet@1.2354, 2007-01-19 23:15:59+03:00, dlenev@mockturtle.local +5 -0 Fix for bug #25044 "ALTER TABLE ... ENABLE KEYS acquires global 'opening tables' lock." Execution of ALTER TABLE ... ENABLE KEYS on a table (which can take rather long time) prevented concurrent execution of all statements using tables. The problem was caused by the fact that we were holding LOCK_open mutex during whole duration of this statement and particularly during call to handler::enable_indexes(). This behavior was introduced as part of the fix for bug 14262 "SP: DROP PROCEDURE|VIEW (maybe more) write to binlog too late (race cond)" The patch simply restores old behavior. Note that we can safely do this as this operation takes exclusive lock (similar to name-lock) which blocks both DML and DDL on the table being altered. It also introduces mysql-test/include/wait_show_pattern.inc helper script which is used to make test-case for this bug robust enough.
[20 Jan 2007 11:08]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/18502 ChangeSet@1.2409, 2007-01-20 14:08:53+03:00, dlenev@mockturtle.local +2 -0 Fixed test case for bug #25044 "ALTER TABLE ... ENABLE KEYS acquires global 'opening tables' lock." after merging it into 5.1 tree.
[8 Feb 2007 18:02]
Paul DuBois
Noted in 5.0.36, 5.1.16 changelogs.