Skip to content
Permalink
Browse files
Follow-up to MDEV-13407: Remove fil_wait_crypt_bg_threads()
Tables whose reference count is not zero will be crash-safely
dropped in the background when the count reaches zero. Therefore,
it is no longer necessary to wait for all references to be released
before possibly adding the table to the background queue.
  • Loading branch information
dr-m committed Sep 9, 2018
1 parent 980d1bf commit 99e36a7
Showing 1 changed file with 0 additions and 34 deletions.
@@ -3240,37 +3240,6 @@ row_mysql_lock_table(
return(err);
}

static
void
fil_wait_crypt_bg_threads(
dict_table_t* table)
{
time_t start = time(0);
time_t last = start;

while (table->get_ref_count()> 0) {
dict_mutex_exit_for_mysql();
os_thread_sleep(20000);
dict_mutex_enter_for_mysql();
time_t now = time(0);

if (now >= last + 30) {
ib::warn()
<< "Waited " << now - start
<< " seconds for ref-count on table: "
<< table->name << " space: " << table->space;
last = now;
}
if (now >= start + 300) {
ib::warn()
<< "After " << now - start
<< " seconds, gave up waiting "
<< "for ref-count on table: " << table->name
<< " space: " << table->space;
break;
}
}
}
/** Drop ancillary FTS tables as part of dropping a table.
@param[in,out] table Table cache entry
@param[in,out] trx Transaction handle
@@ -3647,9 +3616,6 @@ row_drop_table_for_mysql(
shouldn't have to. There should never be record locks on a table
that is going to be dropped. */

/* Wait on background threads to stop using table */
fil_wait_crypt_bg_threads(table);

if (table->get_ref_count() > 0 || table->n_rec_locks > 0
|| lock_table_has_locks(table)) {
goto defer;

0 comments on commit 99e36a7

Please sign in to comment.