summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKentoku SHIBA <kentokushiba@gmail.com>2020-06-28 15:02:49 +0900
committerKentoku SHIBA <kentokushiba@gmail.com>2020-06-28 18:07:47 +0900
commit22a0097727ffc5d893ef56fe4470a5c61985feb8 (patch)
tree34722226cf082a4fd40e8bd95a8fd789ee69cc83
parente6e41f04f4e3a55312d6ff11263d72e9366e6a86 (diff)
downloadmariadb-git-bb-10.4-MDEV-22979.tar.gz
MDEV-22979 "mysqld --bootstrap" / mysql_install_db hangs when Spider is installedbb-10.4-MDEV-22979
-rw-r--r--storage/spider/spd_table.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/storage/spider/spd_table.cc b/storage/spider/spd_table.cc
index 558baa97cd3..c49fc4e72db 100644
--- a/storage/spider/spd_table.cc
+++ b/storage/spider/spd_table.cc
@@ -9876,6 +9876,7 @@ void spider_free_sts_threads(
) {
bool thread_killed;
DBUG_ENTER("spider_free_sts_threads");
+ spider_thread->init_command = FALSE;
pthread_mutex_lock(&spider_thread->mutex);
thread_killed = spider_thread->killed;
spider_thread->killed = TRUE;
@@ -10032,12 +10033,13 @@ void *spider_table_bg_sts_action(
tmp_disable_binlog(thd);
thd->security_ctx->skip_grants();
thd->client_capabilities |= CLIENT_MULTI_RESULTS;
- if (!(*spd_mysqld_server_started) && !thd->killed)
+ if (!(*spd_mysqld_server_started) && !thd->killed && !thread->killed)
{
pthread_mutex_lock(spd_LOCK_server_started);
thd->mysys_var->current_cond = spd_COND_server_started;
thd->mysys_var->current_mutex = spd_LOCK_server_started;
- if (!(*spd_mysqld_server_started) && !thd->killed)
+ if (!(*spd_mysqld_server_started) && !thd->killed && !thread->killed &&
+ thread->init_command)
{
do
{
@@ -10047,14 +10049,16 @@ void *spider_table_bg_sts_action(
spd_LOCK_server_started, &abstime);
} while (
(error_num == ETIMEDOUT || error_num == ETIME) &&
- !(*spd_mysqld_server_started) && !thd->killed && !thread->killed
+ !(*spd_mysqld_server_started) && !thd->killed && !thread->killed &&
+ thread->init_command
);
}
pthread_mutex_unlock(spd_LOCK_server_started);
thd->mysys_var->current_cond = &thread->cond;
thd->mysys_var->current_mutex = &thread->mutex;
}
- while (spider_init_queries[i].length && !thd->killed && !thread->killed)
+ while (spider_init_queries[i].length && !thd->killed && !thread->killed &&
+ thread->init_command)
{
dispatch_command(COM_QUERY, thd, spider_init_queries[i].str,
(uint) spider_init_queries[i].length, FALSE, FALSE);