From: Dmitry Shulga Date: November 19 2010 5:43am Subject: bzr commit into mysql-5.1-bugteam branch (Dmitry.Shulga:3511) Bug#54486 List-Archive: http://lists.mysql.com/commits/124353 X-Bug: 54486 Message-Id: <201011190544.oAIIgUtj024635@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0383084147==" --===============0383084147== 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-19 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() 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-19 05:43:28 +0000 @@ -985,6 +985,9 @@ bool mysql_rm_db(THD *thd,char *db,bool } thd->pop_internal_handler(); } + DBUG_ASSERT(deleted >= 0 || + (deleted < 0 && thd->main_da.is_set())); + if (!silent && deleted>=0) { const char *query; @@ -1213,10 +1216,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-19 05:43:28 +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) @@ -1739,8 +1740,11 @@ err: DATA_TMP_EXT, share->base.raid_chunks, (param->testflag & T_BACKUP_DATA ? MYF(MY_REDEL_MAKE_BACKUP): MYF(0))) || - mi_open_datafile(info,share,name,-1)) + mi_open_datafile(info,share,name,-1)) { got_error=1; + param->retry_repair= 0; + my_error(ER_CANT_DELETE_FILE, MYF(0), share->data_file_name, errno); + } } } if (got_error) @@ -1774,6 +1778,7 @@ err: } share->state.changed|= (STATE_NOT_OPTIMIZED_KEYS | STATE_NOT_SORTED_PAGES | STATE_NOT_ANALYZED); + DBUG_ASSERT(info->dfile >= 0 || (info->dfile < 0 && !param->retry_repair)); DBUG_RETURN(got_error); } @@ -2587,6 +2592,7 @@ err: share->state.header.options[0]&= (uchar) ~HA_OPTION_COMPRESS_RECORD; share->pack.header_length=0; } + DBUG_ASSERT(info->dfile >= 0 || (info->dfile < 0 && !param->retry_repair)); DBUG_RETURN(got_error); } @@ -3126,6 +3132,7 @@ err: share->state.header.options[0]&= (uchar) ~HA_OPTION_COMPRESS_RECORD; share->pack.header_length=0; } + DBUG_ASSERT(info->dfile >= 0 || (info->dfile < 0 && !param->retry_repair)); DBUG_RETURN(got_error); #endif /* THREAD */ } @@ -3268,8 +3275,8 @@ static int sort_get_next_record(MI_SORT_ { if (sort_param->read_cache.error) param->out_flag |= O_DATA_LOST; - param->retry_repair=1; - param->testflag|=T_RETRY_WITHOUT_QUICK; + param->retry_repair=1; + param->testflag|=T_RETRY_WITHOUT_QUICK; DBUG_RETURN(-1); } sort_param->start_recpos=sort_param->pos; --===============0383084147== 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\ # u3rrey6xnr81gvjl # target_branch: file:///Users/shulga/projects/mysql/5.1-bugteam-\ # bug54486/ # testament_sha1: 767cebe673bb90581cb98986aef4765a65c687a6 # timestamp: 2010-11-19 11:43:35 +0600 # base_revision_id: vasil.dimov@stripped\ # j154vnn28ef2y9x5 # # Begin bundle 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 BK7WQ8A= --===============0383084147==--