From: Dmitry Shulga Date: November 29 2010 10:05am Subject: bzr commit into mysql-5.1-bugteam branch (Dmitry.Shulga:3511) Bug#54486 List-Archive: http://lists.mysql.com/commits/125310 X-Bug: 54486 Message-Id: <201011291007.oASN3mjm023958@rcsinet13.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0482081146==" --===============0482081146== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/shulga/projects/mysql/5.1-bugteam-bug54486/ based on revid:vasil.dimov@stripped 3511 Dmitry Shulga 2010-11-29 Fixed bug#54486 - assert in my_seek, concurrent DROP/CREATE SCHEMA, CREATE TABLE, REPAIR. The cause of assert was concurrent execution of DROP DATABASE and REPAIR TABLE where first statement deleted table's file .TMD at the same time when REPAIR TABLE statement tried replace old file by temporary file that has just been removed. Additionally was fixed trouble when DROP TABLE try delete all files belong to table being dropped at the same time when REPAIR TABLE statement has just deleted .TMD file. @ sql/sql_db.cc mysql_rm_known_files() modified: ignore possible errors when trying delete all table's files. Such aggressigve algorithm permits skip already deleted (in another thread) files. @ storage/myisam/mi_check.c mi_repair() was modified: set param->retry_repair= 0 in order to don't call following failover procedure in ha_myisam::repair(); set an error in diagnostic area in case of error in access to .TMD file. modified: sql/sql_db.cc storage/myisam/mi_check.c === modified file 'sql/sql_db.cc' --- a/sql/sql_db.cc 2010-10-19 10:27:09 +0000 +++ b/sql/sql_db.cc 2010-11-29 10:05:20 +0000 @@ -985,6 +985,10 @@ bool mysql_rm_db(THD *thd,char *db,bool } thd->pop_internal_handler(); } + DBUG_ASSERT(deleted >= 0 || + (deleted < 0 && thd->main_da.is_set()) || + thd->killed); + if (!silent && deleted>=0) { const char *query; @@ -1213,10 +1217,7 @@ static long mysql_rm_known_files(THD *th else { strxmov(filePath, org_path, "/", file->name, NullS); - if (my_delete_with_symlink(filePath,MYF(MY_WME))) - { - goto err; - } + my_delete_with_symlink(filePath, MYF(MY_WME)); } } if (thd->killed || === modified file 'storage/myisam/mi_check.c' --- a/storage/myisam/mi_check.c 2010-03-25 12:08:21 +0000 +++ b/storage/myisam/mi_check.c 2010-11-29 10:05:20 +0000 @@ -51,6 +51,7 @@ #include #endif #include "rt_index.h" +#include "mysqld_error.h" #ifndef USE_RAID #define my_raid_create(A,B,C,D,E,F,G) my_create(A,B,C,G) @@ -1740,7 +1741,11 @@ err: (param->testflag & T_BACKUP_DATA ? MYF(MY_REDEL_MAKE_BACKUP): MYF(0))) || mi_open_datafile(info,share,name,-1)) - got_error=1; + { + got_error=1; + my_error(ER_CANT_DELETE_FILE, MYF(0), share->data_file_name, errno); + } + param->retry_repair= 0; } } if (got_error) @@ -1774,6 +1779,7 @@ err: } share->state.changed|= (STATE_NOT_OPTIMIZED_KEYS | STATE_NOT_SORTED_PAGES | STATE_NOT_ANALYZED); + DBUG_ASSERT(!param->retry_repair || info->dfile >= 0); DBUG_RETURN(got_error); } @@ -2587,6 +2593,7 @@ err: share->state.header.options[0]&= (uchar) ~HA_OPTION_COMPRESS_RECORD; share->pack.header_length=0; } + DBUG_ASSERT(!param->retry_repair || info->dfile >= 0); DBUG_RETURN(got_error); } @@ -3126,6 +3133,7 @@ err: share->state.header.options[0]&= (uchar) ~HA_OPTION_COMPRESS_RECORD; share->pack.header_length=0; } + DBUG_ASSERT(!param->retry_repair || info->dfile >= 0); DBUG_RETURN(got_error); #endif /* THREAD */ } --===============0482081146== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/dmitry.shulga@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: dmitry.shulga@stripped\ # 40rbzm50mz5uloaq # target_branch: file:///Users/shulga/projects/mysql/5.1-bugteam-\ # bug54486/ # testament_sha1: 0444db9c4c5dc0ef5ad4461e2f5c4d8a8985669f # timestamp: 2010-11-29 16:05:45 +0600 # base_revision_id: vasil.dimov@stripped\ # j154vnn28ef2y9x5 # # Begin bundle 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 ETf8XckU4UJBTTll7A== --===============0482081146==--