Commit 25aaa652 authored by Nirbhay Choubey's avatar Nirbhay Choubey

MDEV-6832: ER_LOCK_WAIT_TIMEOUT on SHOW STATUS

Synchronous read view should not be needed for
SHOW commands.
parent 96e505e4
#
# MDEV-6832: ER_LOCK_WAIT_TIMEOUT on SHOW STATUS
#
SHOW STATUS LIKE 'wsrep_ready';
Variable_name Value
wsrep_ready ON
SHOW STATUS LIKE 'wsrep_ready';
Variable_name Value
wsrep_ready OFF
SET @@global.wsrep_cluster_address='gcomm://';
# End of test.
...@@ -141,7 +141,6 @@ SET GLOBAL wsrep_provider=none; ...@@ -141,7 +141,6 @@ SET GLOBAL wsrep_provider=none;
# #
# MDEV#6206: wsrep_slave_threads subtracts from max_connections # MDEV#6206: wsrep_slave_threads subtracts from max_connections
# #
call mtr.add_suppression("safe_mutex: Found wrong usage of mutex 'LOCK_wsrep_slave_threads' and 'LOCK_global_system_variables'");
call mtr.add_suppression("WSREP: Failed to get provider options"); call mtr.add_suppression("WSREP: Failed to get provider options");
SELECT @@global.wsrep_provider; SELECT @@global.wsrep_provider;
@@global.wsrep_provider @@global.wsrep_provider
......
--wsrep-provider=$WSREP_PROVIDER --wsrep-cluster-address=gcomm:// --wsrep_provider_options='base_port=$GALERA_BASE_PORT' --wsrep-on=1 --wsrep_causal_reads=ON
--source include/have_wsrep_provider.inc
--source include/have_binlog_format_row.inc
--echo #
--echo # MDEV-6832: ER_LOCK_WAIT_TIMEOUT on SHOW STATUS
--echo #
SHOW STATUS LIKE 'wsrep_ready';
--disable_query_log
eval SET @@global.wsrep_provider='$WSREP_PROVIDER';
--enable_query_log
SHOW STATUS LIKE 'wsrep_ready';
SET @@global.wsrep_cluster_address='gcomm://';
--echo # End of test.
...@@ -78,7 +78,6 @@ SET GLOBAL wsrep_provider=none; ...@@ -78,7 +78,6 @@ SET GLOBAL wsrep_provider=none;
--echo # --echo #
--echo # MDEV#6206: wsrep_slave_threads subtracts from max_connections --echo # MDEV#6206: wsrep_slave_threads subtracts from max_connections
--echo # --echo #
call mtr.add_suppression("safe_mutex: Found wrong usage of mutex 'LOCK_wsrep_slave_threads' and 'LOCK_global_system_variables'");
call mtr.add_suppression("WSREP: Failed to get provider options"); call mtr.add_suppression("WSREP: Failed to get provider options");
--disable_query_log --disable_query_log
......
...@@ -2754,10 +2754,10 @@ mysql_execute_command(THD *thd) ...@@ -2754,10 +2754,10 @@ mysql_execute_command(THD *thd)
#endif #endif
case SQLCOM_SHOW_STATUS: case SQLCOM_SHOW_STATUS:
{ {
execute_show_status(thd, all_tables);
#ifdef WITH_WSREP #ifdef WITH_WSREP
if (WSREP_CLIENT(thd) && wsrep_sync_wait(thd)) goto error; wsrep_free_status(thd);
#endif /* WITH_WSREP */ #endif /* WITH_WSREP */
execute_show_status(thd, all_tables);
break; break;
} }
case SQLCOM_SHOW_EXPLAIN: case SQLCOM_SHOW_EXPLAIN:
......
...@@ -365,7 +365,14 @@ bool wsrep_cluster_address_update (sys_var *self, THD* thd, enum_var_type type) ...@@ -365,7 +365,14 @@ bool wsrep_cluster_address_update (sys_var *self, THD* thd, enum_var_type type)
*/ */
mysql_mutex_unlock(&LOCK_global_system_variables); mysql_mutex_unlock(&LOCK_global_system_variables);
wsrep_stop_replication(thd); wsrep_stop_replication(thd);
/*
Unlock and lock LOCK_wsrep_slave_threads to maintain lock order & avoid
any potential deadlock.
*/
mysql_mutex_unlock(&LOCK_wsrep_slave_threads);
mysql_mutex_lock(&LOCK_global_system_variables); mysql_mutex_lock(&LOCK_global_system_variables);
mysql_mutex_lock(&LOCK_wsrep_slave_threads);
if (wsrep_start_replication()) if (wsrep_start_replication())
{ {
......
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