From b5f686ba4b7f6a7dfd7aa302c731c4bb35ef1fef Mon Sep 17 00:00:00 2001 From: qingxinsun Date: Mon, 17 Oct 2022 15:44:09 +0800 Subject: [PATCH] fts sync commit bug fix --- storage/innobase/fts/fts0fts.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/storage/innobase/fts/fts0fts.cc b/storage/innobase/fts/fts0fts.cc index 6ec10be9..71ed2bd9 100644 --- a/storage/innobase/fts/fts0fts.cc +++ b/storage/innobase/fts/fts0fts.cc @@ -4274,7 +4274,6 @@ static MY_ATTRIBUTE((warn_unused_result)) dberr_t fts_cache_clear(cache); DEBUG_SYNC_C("fts_deleted_doc_ids_clear"); fts_cache_init(cache); - rw_lock_x_unlock(&cache->lock); /* If query come in at this point, fts cache is cleaned, but fts trx is not committed, unconsistent point */ DBUG_EXECUTE_IF("fts_instrument_sync_request", os_thread_sleep(10 * 1000 * 1000);); @@ -4288,6 +4287,9 @@ static MY_ATTRIBUTE((warn_unused_result)) dberr_t ib::error(ER_IB_MSG_476) << "(" << ut_strerr(error) << ") during SYNC."; } + /* We need to do this after fts_sql_commit, fts query could read the data just committed. */ + rw_lock_x_unlock(&cache->lock); + if (fts_enable_diag_print && elapsed_time) { ib::info(ER_IB_MSG_477) << "SYNC for table " << sync->table->name -- 2.19.1