Bug #43729 Dropping and recreating a partition causes duplicate partition error
| Submitted: | 18 Mar 2009 14:46 | Modified: | 29 Nov 2013 18:20 |
|---|---|---|---|
| Reporter: | Oli Sennhauser | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | MySQL Server: Partitions | Severity: | S3 (Non-critical) |
| Version: | 5.1.30, 5.1 bzr | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | InnoDB Partition | ||
[18 Mar 2009 14:46]
Oli Sennhauser
[9 May 2009 23:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[26 Aug 2009 7:32]
Sveta Smirnova
Thank you for the report.
Verified as described.
Customer says this happens only on slow disk. So to recreate modify code as following:
=== modified file 'mysys/my_delete.c'
--- mysys/my_delete.c 2007-12-07 20:27:48 +0000
+++ mysys/my_delete.c 2009-08-26 06:44:13 +0000
@@ -22,7 +22,7 @@
int err;
DBUG_ENTER("my_delete");
DBUG_PRINT("my",("name %s MyFlags %d", name, MyFlags));
-
+sleep(5);
if ((err = unlink(name)) == -1)
{
my_errno=errno;
Then run following test for the testsuite:
create table `data` (
`id` bigint(20) default null,
`f1` timestamp not null default current_timestamp on update
current_timestamp
) engine=myisam default charset=latin1 partition by list (
dayofmonth(f1))
(
partition p14 values in (14) engine = myisam,
partition p29 values in (29) engine = myisam,
partition p30 values in (30) engine = myisam
);
--send alter table `data` drop partition p14
connect (addconroot, localhost, root,,);
connection addconroot;
alter table `data` add partition ( partition p14 values in (14));
Probably you have to run it several times like ./mtr bug43729 --repeat=10
[27 Aug 2009 18:27]
Omer Barnir
triage: setting to 2343 W3 - flush tables between drop/create Need e/r values to set target
[7 Sep 2009 9:28]
Mikael Ronström
InnoDB does do a certain part of the drop table processing in the background. So I am sure we can get the same problem by doing DROP TABLE and CREATE TABLE with the same name after each other. A very simple workaround is to not reuse the same name of the partition in the statement immediately following, or have an extra check in the application. Maybe a FLUSH of some kind between solves it as well.
[18 Jan 2010 15:21]
Mattias Jonsson
May be related to bug#47343.
[5 Oct 2010 13:53]
Mattias Jonsson
Changing to 'Open' because of the verification is not valid. The verified test does not need the '+sleep(5)' to be reproducable, but it does not verify the bug, since it is a correct failure (due to timing the 'add partition p14' can lock the table before the 'drop partition p14' and hence return 'duplicate partition' error). I think this is only happens with InnoDB. InnoDB does sometimes queue 'drop table/partition' into a background drop queue (as seen in the report) which is one ingredient to this bug. There has been several bugfixes in this area (and even more in 5.5+) which might have solved this bug too.
[5 Oct 2010 16:08]
Sveta Smirnova
Mattias, thank you for the feedback. But test explicitly adds ENGINE=MyISAM option. Set it back to "Open" if you think this is still OK.
[15 Oct 2010 15:51]
Mattias Jonsson
Sveta, The MyISAM test is not a bug, that is expected behavior (i.e. due to timing the 'ADD PARTITION' can lock the table before 'DELETE PARTITION' which results in the behavior). I think it needs to be verified with InnoDB including getting the 'InnoDB: though there are still open handles to it.' message in the error log. If not possible to verify on latest version and if important, verify it in 5.1.30 and then I can see which changeset that fixed the bug or investigate further.
[29 Nov 2013 18:20]
Sveta Smirnova
I tried to repeat it with same test and InnoDB and could not. If somebody hit it in latest versions, please comment.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.072 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.