Skip to content

Commit

Permalink
MDEV-6832: ER_LOCK_WAIT_TIMEOUT on SHOW STATUS
Browse files Browse the repository at this point in the history
Synchronous read view should not be needed for
SHOW commands.
  • Loading branch information
Nirbhay Choubey committed Jan 1, 2015
1 parent 96e505e commit 25aaa65
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 4 deletions.
11 changes: 11 additions & 0 deletions mysql-test/suite/wsrep/r/mdev_6832.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#
# 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.
1 change: 0 additions & 1 deletion mysql-test/suite/wsrep/r/variables.result
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,6 @@ SET GLOBAL wsrep_provider=none;
#
# 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");
SELECT @@global.wsrep_provider;
@@global.wsrep_provider
Expand Down
1 change: 1 addition & 0 deletions mysql-test/suite/wsrep/t/mdev_6832.opt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
--wsrep-provider=$WSREP_PROVIDER --wsrep-cluster-address=gcomm:// --wsrep_provider_options='base_port=$GALERA_BASE_PORT' --wsrep-on=1 --wsrep_causal_reads=ON
15 changes: 15 additions & 0 deletions mysql-test/suite/wsrep/t/mdev_6832.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
--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.
1 change: 0 additions & 1 deletion mysql-test/suite/wsrep/t/variables.test
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ SET GLOBAL wsrep_provider=none;
--echo #
--echo # MDEV#6206: wsrep_slave_threads subtracts from max_connections
--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");

--disable_query_log
Expand Down
4 changes: 2 additions & 2 deletions sql/sql_parse.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2754,10 +2754,10 @@ mysql_execute_command(THD *thd)
#endif
case SQLCOM_SHOW_STATUS:
{
execute_show_status(thd, all_tables);
#ifdef WITH_WSREP
if (WSREP_CLIENT(thd) && wsrep_sync_wait(thd)) goto error;
wsrep_free_status(thd);
#endif /* WITH_WSREP */
execute_show_status(thd, all_tables);
break;
}
case SQLCOM_SHOW_EXPLAIN:
Expand Down
7 changes: 7 additions & 0 deletions sql/wsrep_var.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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);
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_wsrep_slave_threads);

if (wsrep_start_replication())
{
Expand Down

0 comments on commit 25aaa65

Please sign in to comment.