Commit 3d8cacee authored by Jan Lindström's avatar Jan Lindström

MDEV-19404: Assertion failure on !is_thread_specific || (mysqld_server_initialized && thd)

In wsrep_plugins_post_init we iterate all theads and if they are
galera appliers (wsrep_applier) we init session variables. However,
current_thd was not set and recent changes on session variables
require holding LOCK_gloal_system_variables mutex.

This is 10.4 version.
parent 41779561
...@@ -4352,20 +4352,28 @@ void wsrep_plugins_pre_init() ...@@ -4352,20 +4352,28 @@ void wsrep_plugins_pre_init()
my_bool post_init_callback(THD *thd, void *) my_bool post_init_callback(THD *thd, void *)
{ {
DBUG_ASSERT(!current_thd);
if (thd->wsrep_applier) if (thd->wsrep_applier)
{ {
// Save options_bits as it will get overwritten in plugin_thdvar_init() // Save options_bits as it will get overwritten in
// plugin_thdvar_init() (verified)
ulonglong option_bits_saved= thd->variables.option_bits; ulonglong option_bits_saved= thd->variables.option_bits;
set_current_thd(thd);
plugin_thdvar_init(thd); plugin_thdvar_init(thd);
// Restore option_bits // Restore option_bits
thd->variables.option_bits= option_bits_saved; thd->variables.option_bits= option_bits_saved;
} }
set_current_thd(0);
return 0; return 0;
} }
void wsrep_plugins_post_init() void wsrep_plugins_post_init()
{ {
mysql_mutex_lock(&LOCK_global_system_variables);
server_threads.iterate(post_init_callback); server_threads.iterate(post_init_callback);
mysql_mutex_unlock(&LOCK_global_system_variables);
} }
#endif /* WITH_WSREP */ #endif /* WITH_WSREP */
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