From 954d21deb26c6621eac83d73d3e65a4100de1c91 Mon Sep 17 00:00:00 2001 From: Sergey Vojtovich Date: Thu, 15 Aug 2013 18:15:32 +0400 Subject: [PATCH] MDEV-4897 - Assertion `share->tdc.prev == 0 && share->tdc.next == 0' failed in TABLE_SHARE* tdc_acquire_share(THD*, const char*, const char*, const char*, uint, uint, TABLE**) Removed false assertions. When multiple threads acquire the same previously unused share, only one thread shall remove share from unused list (the one that has was_unused == true). Other threads will ignore this step and may continue even if share is not yet removed from unused list. --- sql/table_cache.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/sql/table_cache.cc b/sql/table_cache.cc index 14e735ed3b2..b3c08400d56 100644 --- a/sql/table_cache.cc +++ b/sql/table_cache.cc @@ -847,7 +847,6 @@ TABLE_SHARE *tdc_acquire_share(THD *thd, const char *db, const char *table_name, if ((*out_table= tc_acquire_table(thd, share))) { DBUG_ASSERT(!(flags & GTS_NOLOCK)); - DBUG_ASSERT(!share->tdc.prev && !share->tdc.next); DBUG_ASSERT(!share->error); DBUG_ASSERT(!share->is_view); DBUG_RETURN(share); @@ -898,7 +897,6 @@ TABLE_SHARE *tdc_acquire_share(THD *thd, const char *db, const char *table_name, } mysql_mutex_unlock(&LOCK_unused_shares); } - DBUG_ASSERT(share->tdc.prev == 0 && share->tdc.next == 0); end: DBUG_PRINT("exit", ("share: 0x%lx ref_count: %u",