diff options
author | Sergey Vojtovich <svoj@mariadb.org> | 2014-01-28 11:12:43 +0400 |
---|---|---|
committer | Sergey Vojtovich <svoj@mariadb.org> | 2014-01-28 11:12:43 +0400 |
commit | e1e5ce0da242c30a744f496dfc5b5a00584d0e56 (patch) | |
tree | 4518efdf226a6225dbc7356a31a2042dfb4213a8 /mysql-test/r/plugin_vars.result | |
parent | 94868914b84bd96ea946fc583862126ab8bda3a0 (diff) | |
download | mariadb-git-e1e5ce0da242c30a744f496dfc5b5a00584d0e56.tar.gz |
MDEV-5345 - Deadlock between mysql_change_user(), SHOW VARIABLES and
INSTALL PLUGIN
There was mixed lock order between LOCK_plugin, LOCK_global_system_variables
and LOCK_system_variables_hash. This patch ensures that write-lock on
LOCK_system_variables_hash doesn't intersect with LOCK_plugin.
Fixed by moving initialization/deinitialization of plugin options from
plugin_add()/plugin_del() to plugin_initialize()/plugin_deinitalize().
So that plugin options are handled without protection of LOCK_plugin.
Diffstat (limited to 'mysql-test/r/plugin_vars.result')
-rw-r--r-- | mysql-test/r/plugin_vars.result | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/mysql-test/r/plugin_vars.result b/mysql-test/r/plugin_vars.result new file mode 100644 index 00000000000..869e0cf9a2a --- /dev/null +++ b/mysql-test/r/plugin_vars.result @@ -0,0 +1,22 @@ +# +# MDEV-5345 - Deadlock between mysql_change_user(), SHOW VARIABLES and +# INSTALL PLUGIN +# +CREATE PROCEDURE p_install(x INT) +BEGIN +DECLARE CONTINUE HANDLER FOR 1126 BEGIN END; +WHILE x DO +SET x= x - 1; +INSTALL PLUGIN no_such_plugin SONAME 'no_such_object'; +END WHILE; +END| +CREATE PROCEDURE p_show_vars(x INT) +WHILE x DO +SET x= x - 1; +SHOW VARIABLES; +END WHILE| +CALL p_install(100); +CALL p_show_vars(100); +USE test; +DROP PROCEDURE p_install; +DROP PROCEDURE p_show_vars; |