MDEV-21329 InnoDB: Failing assertion:...

MDEV-21329 InnoDB: Failing assertion: lock->lock_word.load(std::memory_order_relaxed) == X_LOCK_DECR upon server shutdown

Problem is that dropping of fts table and sync of fts table
happens concurrently during fts optimize thread shutdown.
fts_optimize_remove_table() is executed by a user thread that
performs DDL, and that the fts_optimize_wq may be removed if
fts_optimize_shutdown() has started executing.

fts_optimize_remove_table() doesn't remove the table from the queue
and it leads to above scenario. While removing the table from
fts_optimize_wq, if the table can't be removed then wait till
fts_optimize_thread shuts down.

Reviewed-by: Marko Mäkelä
parent b18921cf
...@@ -2573,6 +2573,11 @@ fts_optimize_remove_table( ...@@ -2573,6 +2573,11 @@ fts_optimize_remove_table(
if (fts_opt_start_shutdown) { if (fts_opt_start_shutdown) {
ib::info() << "Try to remove table " << table->name ib::info() << "Try to remove table " << table->name
<< " after FTS optimize thread exiting."; << " after FTS optimize thread exiting.";
/* If the table can't be removed then wait till
fts optimize thread shuts down */
while (fts_optimize_wq) {
os_thread_sleep(10000);
}
return; return;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment