summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarko Mäkelä <marko.makela@mariadb.com>2021-06-24 16:07:27 +0300
committerMarko Mäkelä <marko.makela@mariadb.com>2021-06-24 16:07:27 +0300
commit82fe83a34c26b88338f7dae638566f6f3a6e84ac (patch)
tree84c1ee57401b92a668a6561795d368ab6d0884dd
parent033e29b6a1a693a8b1f03c37f50918ecf1b25ac4 (diff)
downloadmariadb-git-82fe83a34c26b88338f7dae638566f6f3a6e84ac.tar.gz
MDEV-26012 InnoDB purge and shutdown hangs after failed ALTER TABLE
ha_innobase::commit_inplace_alter_table(): Invoke purge_sys.resume_FTS() on all error handling paths if purge_sys.stop_FTS() had been called. This fixes a regression that had been introduced in commit 1bd681c8b3c5213ce1f7976940a7dc38b48a0d39 (MDEV-25506).
-rw-r--r--storage/innobase/handler/handler0alter.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc
index b074c86b9d2..62f9d103aa1 100644
--- a/storage/innobase/handler/handler0alter.cc
+++ b/storage/innobase/handler/handler0alter.cc
@@ -10885,6 +10885,9 @@ ha_innobase::commit_inplace_alter_table(
lock_fail:
my_error_innodb(
error, table_share->table_name.str, 0);
+ if (fts_exist) {
+ purge_sys.resume_FTS();
+ }
DBUG_RETURN(true);
} else if ((ctx->new_table->flags2
& (DICT_TF2_FTS_HAS_DOC_ID | DICT_TF2_FTS))
@@ -10916,6 +10919,9 @@ lock_fail:
DBUG_ASSERT(ctx->need_rebuild());
if (alter_rebuild_apply_log(ctx, ha_alter_info,
altered_table)) {
+ if (fts_exist) {
+ purge_sys.resume_FTS();
+ }
DBUG_RETURN(true);
}
}