#At file:///home/mm136784/z/mysql-6.0-runtime/ based on revid:kostja@stripped
2752 Magne Mahre 2008-11-24
Bug #38661 all threads hang in "opening tables" or
"waiting for table" and cpu is at 100%
A race between open_tables and a "flush table" operation
resulted in neither being able to complete. open_tables
was not able to open the table and initiated a recover.
The conditions for completing the recovery were too
strict and couldn't be achieved while the flush was
running. The solution was to loosen the requirement
that said that a share couldn't exist without a table,
since this is actually a valid condition in certain
cases.
modified:
sql/sql_base.cc
=== modified file 'sql/sql_base.cc'
=== modified file 'sql/sql_base.cc'
--- a/sql/sql_base.cc 2008-11-18 19:41:51 +0000
+++ b/sql/sql_base.cc 2008-11-24 11:27:20 +0000
@@ -7678,8 +7678,7 @@
mdl_get_tdc_key(lock_data, &key);
if ((share= (TABLE_SHARE*) hash_search(&table_def_cache, (uchar*) key.str,
key.length)) &&
- share->version != refresh_version &&
- !share->used_tables.is_empty())
+ share->version != refresh_version)
break;
}
if (!lock_data)