| Bug #25044 | ALTER TABLE ... ENABLE KEYS acquires global 'opening tables' lock. | ||
|---|---|---|---|
| Submitted: | 13 Dec 2006 17:09 | Modified: | 8 Feb 2007 19:02 |
| Reporter: | Domas Mituzas | ||
| Status: | Closed | ||
| Category: | Server: Locking | Severity: | S2 (Serious) |
| Version: | 5.0.32-bk, 5.1.14-bk | OS: | Any |
| Assigned to: | Dmitri Lenev | Target Version: | |
| Tags: | bfsm_2006_12_21, regression, rt_q1_2007 | ||
[13 Dec 2006 17:09]
Domas Mituzas
[27 Dec 2006 20: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 9: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 14: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 19: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 21: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 12: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 19:02]
Paul DuBois
Noted in 5.0.36, 5.1.16 changelogs.
