Bug #43867 | ALTER TABLE on a partitioned table causes unnecessary deadlocks | ||
---|---|---|---|
Submitted: | 25 Mar 2009 22:10 | Modified: | 7 Mar 2010 23:57 |
Reporter: | Davi Arnaut (OCA) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Partitions | Severity: | S2 (Serious) |
Version: | 6.0-runtime, azalea | OS: | Any |
Assigned to: | Jon Olav Hauglid | CPU Architecture: | Any |
Tags: | regression |
[25 Mar 2009 22:10]
Davi Arnaut
[2 Jun 2009 17:42]
Mattias Jonsson
May be connected to bug#40181. However I can run the test case without any deadlock in the current 6.0-bugteam tree. Davi, can you re-verify against a current 6.0-bugteam tree?
[10 Jul 2009 9:40]
Sveta Smirnova
Bug does not exists in version 5.1
[16 Jul 2009 9:27]
Alexander Nozdrin
Bug#40973 seems to be a duplicate of this one.
[10 Aug 2009 9:20]
Mattias Jonsson
After applying the fix for bug#40181, the status is: problem 1) no syncronization, Fixed. Now using tdc_remove_table instead. problem 2) breaks pending transactions on failing alter partition commands. Due to the different alterations of the partitions the table definition is removed from the cache early to ensure that the old definition never is used again. This is done so that it is never missed in any alter partition branch, and therefore before some checks which could discover errors. problem 3) Does not wait on pending transactions. This could be fixed, so that regardless if the alter partition command succeeds or fails it always waits on pending transactions. Possible fixes, either wait for transactions on error before closing all tables and break all running transactions or document current behavior (a failing ALTER TABLE t XXX PARTITION will break all pending transactions to return the error message directly.)
[20 Aug 2009 10:44]
Konstantin Osipov
Matthias, the fix for this bug is to remove the unnecessary tdc_remove_table() from the partitioned code, as I suggested in the review for Bug#40181. One should not call tdc_remove_table() without an exclusive metadata lock, and partitioned code does it in two places.
[2 Sep 2009 7:49]
Jon Olav Hauglid
Related to bug#46654
[22 Sep 2009 8:52]
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/84060 2830 Jon Olav Hauglid 2009-09-22 Bug #43867 ALTER TABLE on a partitioned table causes unnecessary deadlocks The problem was that if one connection is running a multi-statement transaction which involves a single partitioned table, and another connection attempts to alter the table to drop a non-existing partition, (which of course will fail), the first connection still gets ER_LOCK_DEADLOCK and cannot proceed anymore. This bug is no longer reproducable. This has also been tested with the patch for Bug#46654 "False deadlock on concurrent DML/DDL with partitions, inconsistent behavior" which concerned a similar problem but where the ALTER TABLE is semantically correct. Test case added in partition_sync.test.
[22 Sep 2009 9:48]
Jon Olav Hauglid
Pushed to mysql-6.0-codebase-bugfixing (version 6.0.14-alpha).
[30 Sep 2009 8:16]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20090929093622-1mooerbh12e97zux) (version source revid:alik@sun.com-20090923103200-kyo2bakdo6tfb2fb) (merge vers: 6.0.14-alpha) (pib:11)
[1 Oct 2009 6:22]
Jon Stephens
Documented bugfix in the 6.0.14 changelog as follows: ALTER TABLE on a partitioned table caused unnecessary deadlocks. Closed.
[1 Oct 2009 9:16]
Jon Stephens
Thank you for your bug report. This issue has been committed to our source repository of that product and will be incorporated into the next release. If necessary, you can access the source repository and build the latest available version, including the bug fix. More information about accessing the source trees is available at http://dev.mysql.com/doc/en/installing-source.html
[4 Nov 2009 12:00]
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/89299 2909 Jon Olav Hauglid 2009-11-04 Bug #43867 ALTER TABLE on a partitioned table causes unnecessary deadlocks Backport of revno: 2617.68.35 The problem was that if one connection is running a multi-statement transaction which involves a single partitioned table, and another connection attempts to alter the table to drop a non-existing partition, (which of course will fail), the first connection still gets ER_LOCK_DEADLOCK and cannot proceed anymore. This bug is no longer reproducable. This has also been tested with the patch for Bug#46654 "False deadlock on concurrent DML/DDL with partitions, inconsistent behavior" which concerned a similar problem but where the ALTER TABLE is semantically correct. Test case added in partition_sync.test.
[4 Nov 2009 12:23]
Jon Olav Hauglid
Pushed into mysql-next-mr-runtime (version 5.6.0)
[20 Nov 2009 12:54]
Bugs System
Pushed into 5.6.0-beta (revid:davi.arnaut@sun.com-20091119234808-xbjpkwaxjt5x5c0b) (version source revid:jon.hauglid@sun.com-20090928163426-2lg1gofzz44xzzxf) (merge vers: 6.0.14-alpha) (pib:13)
[20 Nov 2009 12:56]
Bugs System
Pushed into 6.0.14-alpha (revid:kostja@sun.com-20091120124947-yi6h2jbgw0kbciwm) (version source revid:jon.hauglid@sun.com-20090928163426-2lg1gofzz44xzzxf) (merge vers: 6.0.14-alpha) (pib:13)
[25 Nov 2009 15:55]
Paul DuBois
Noted in 5.6.0 changelog. Already fixed in 6.0.x.
[10 Dec 2009 13:42]
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/93509 3028 Jon Olav Hauglid 2009-12-10 Backport of revno: 2617.80.1 Also re-enables the test for Bug #43867 Followup to Bug#46654 False deadlock on concurrent DML/DDL with partitions, inconsistent behavior Partition_sync.test uses features only available in debug builds. Disabling the test for non-debug builds.
[16 Feb 2010 16:50]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100216101445-2ofzkh48aq2e0e8o) (version source revid:kostja@sun.com-20091211154405-c9yhiewr9o5d20rq) (merge vers: 6.0.14-alpha) (pib:16)
[16 Feb 2010 17:00]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100216101208-33qkfwdr0tep3pf2) (version source revid:kostja@sun.com-20091211103945-198h3pt8w7ypk20u) (pib:16)
[16 Feb 2010 19:30]
Jon Stephens
Re-opened by push involving tests only; no new changelog entry needed. Re-closing.
[6 Mar 2010 10:55]
Bugs System
Pushed into 5.5.3-m3 (revid:alik@sun.com-20100306103849-hha31z2enhh7jwt3) (version source revid:vvaintroub@mysql.com-20100216221947-luyhph0txl2c5tc8) (merge vers: 5.5.99-m3) (pib:16)
[7 Mar 2010 23:57]
Paul DuBois
Moved 5.6.0 changelog entry to 5.5.3.