From be9c400638403e082be9cb2c70d43f96211ce41e Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 8 Jun 2010 06:41:48 -0600 Subject: [PATCH 1/3] Bug#54334 Double initialization of mysys mutexes Prior to this fix, mysys mutexes such as THR_LOCK_lock could be initialized twice by a call to my_init(). The root cause was out of place initialization in my_basic_init(), calling my_thread_global_init(). With this fix, - my_basic_init() properly initializes the mutex implementation itself, for SAFE or FAST mutexes, and for platform dependent initializations, before initialiazing a mutex. - my_init() properly initializes mysys mutexes once, when making the first call to my_thread_global_init(). --- mysys/my_init.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/mysys/my_init.c b/mysys/my_init.c index f27f3f7b3e8..e7ab98bcb73 100644 --- a/mysys/my_init.c +++ b/mysys/my_init.c @@ -104,8 +104,6 @@ my_bool my_basic_init(void) mysql_stdin= & instrumented_stdin; #if defined(THREAD) - if (my_thread_global_init()) - return 1; # if defined(SAFE_MUTEX) safe_mutex_global_init(); /* Must be called early */ # endif From 14182ec9176f2b368270cd82a4a3b31b218f9252 Mon Sep 17 00:00:00 2001 From: Alexander Nozdrin Date: Thu, 10 Jun 2010 17:44:19 +0400 Subject: [PATCH 2/3] Revert a patch for Bug#54334 (Double initialization of mysys mutexes). Revision ID of the patch: marc.alff@oracle.com-20100608124148-lr1ult7lwo75niev --- mysys/my_init.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysys/my_init.c b/mysys/my_init.c index e7ab98bcb73..f27f3f7b3e8 100644 --- a/mysys/my_init.c +++ b/mysys/my_init.c @@ -104,6 +104,8 @@ my_bool my_basic_init(void) mysql_stdin= & instrumented_stdin; #if defined(THREAD) + if (my_thread_global_init()) + return 1; # if defined(SAFE_MUTEX) safe_mutex_global_init(); /* Must be called early */ # endif From f88e6af0bbbba5f7fdf90f6c3401a2c49093a4e9 Mon Sep 17 00:00:00 2001 From: Tor Didriksen Date: Mon, 14 Jun 2010 11:23:49 +0200 Subject: [PATCH 3/3] Bug #53261 MTR tests archive_plugin and blackhole_plugin fail when compiling with cmake Let mtr lookup the plugins, rather than hard-coding autotools lib path. mysql-test/include/not_parallel.inc: Add new feature for skipping when running in parallel. mysql-test/mysql-test-run.pl: Use find_plugin to locate plugins. Export opt_parallel in environment. mysql-test/suite/federated/federated_plugin-master.opt: Use plugin dir from mtr. mysql-test/suite/federated/federated_plugin.test: Skip test, disabled. mysql-test/t/archive_plugin-master.opt: Use plugin dir from mtr. mysql-test/t/archive_plugin.test: Skip test if running in parallel. mysql-test/t/blackhole_plugin-master.opt: Use plugin dir from mtr. mysql-test/t/blackhole_plugin.test: Skip test if running in parallel. --- mysql-test/include/not_parallel.inc | 3 +++ mysql-test/mysql-test-run.pl | 13 ++++++++++++- .../suite/federated/federated_plugin-master.opt | 3 +-- mysql-test/suite/federated/federated_plugin.test | 2 ++ mysql-test/t/archive_plugin-master.opt | 2 +- mysql-test/t/archive_plugin.test | 4 ++++ mysql-test/t/blackhole_plugin-master.opt | 2 +- mysql-test/t/blackhole_plugin.test | 4 ++++ 8 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 mysql-test/include/not_parallel.inc diff --git a/mysql-test/include/not_parallel.inc b/mysql-test/include/not_parallel.inc new file mode 100644 index 00000000000..39432c59813 --- /dev/null +++ b/mysql-test/include/not_parallel.inc @@ -0,0 +1,3 @@ +if (`SELECT '$MTR_PARALLEL' > 1`) { + --skip test requires --parallel=1 +} diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index fa2db663e1e..23a92828e2a 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -362,6 +362,7 @@ sub main { $opt_parallel= 1 if ($opt_parallel < 1); mtr_report("Using parallel: $opt_parallel"); } + $ENV{MTR_PARALLEL} = $opt_parallel; # Create server socket on any free port my $server = new IO::Socket::INET @@ -1826,7 +1827,7 @@ sub find_plugin($$) mtr_file_exists(vs_config_dirs($location,$plugin_filename), "$basedir/lib/plugin/".$plugin_filename, "$basedir/$location/.libs/".$plugin_filename, - "$basedir/lib/mysql/plugin/".$plugin_filename, + "$basedir/lib/mysql/plugin/".$plugin_filename, ); return $lib_example_plugin; } @@ -1943,6 +1944,16 @@ sub environment_setup { } } + # ---------------------------------------------------- + # Add the paths where mysqld will find archive/blackhole/federated plugins. + # ---------------------------------------------------- + $ENV{'ARCHIVE_PLUGIN_DIR'} = + dirname(find_plugin("ha_archive", "storage/archive")); + $ENV{'BLACKHOLE_PLUGIN_DIR'} = + dirname(find_plugin("ha_blackhole", "storage/blackhole")); + $ENV{'FEDERATED_PLUGIN_DIR'} = + dirname(find_plugin("ha_federated", "storage/federated")); + # ---------------------------------------------------- # Add the path where mysqld will find mypluglib.so # ---------------------------------------------------- diff --git a/mysql-test/suite/federated/federated_plugin-master.opt b/mysql-test/suite/federated/federated_plugin-master.opt index ac2e9458e5f..fa9ad063fe1 100644 --- a/mysql-test/suite/federated/federated_plugin-master.opt +++ b/mysql-test/suite/federated/federated_plugin-master.opt @@ -1,2 +1 @@ ---plugin_dir=../storage/federated/.libs - +--plugin_dir=$FEDERATED_PLUGIN_DIR diff --git a/mysql-test/suite/federated/federated_plugin.test b/mysql-test/suite/federated/federated_plugin.test index 81421e226b1..b9056f63352 100644 --- a/mysql-test/suite/federated/federated_plugin.test +++ b/mysql-test/suite/federated/federated_plugin.test @@ -1,6 +1,8 @@ --source include/not_windows.inc --source include/have_federated_plugin.inc +--skip federated plugin is disabled + CREATE TABLE t1(a int) ENGINE=FEDERATED; DROP TABLE t1; diff --git a/mysql-test/t/archive_plugin-master.opt b/mysql-test/t/archive_plugin-master.opt index 28e7a6a2831..36b21a74922 100644 --- a/mysql-test/t/archive_plugin-master.opt +++ b/mysql-test/t/archive_plugin-master.opt @@ -1 +1 @@ ---plugin_dir=../storage/archive/.libs +--plugin_dir=$ARCHIVE_PLUGIN_DIR diff --git a/mysql-test/t/archive_plugin.test b/mysql-test/t/archive_plugin.test index 18b7cddc7d3..567a0a58ce7 100644 --- a/mysql-test/t/archive_plugin.test +++ b/mysql-test/t/archive_plugin.test @@ -1,6 +1,10 @@ --source include/not_windows.inc --source include/have_archive_plugin.inc +# When running in parallel we get +# Warning 1620 Plugin is busy and will be uninstalled on shutdown +--source include/not_parallel.inc + CREATE TABLE t1(a int) ENGINE=ARCHIVE; DROP TABLE t1; diff --git a/mysql-test/t/blackhole_plugin-master.opt b/mysql-test/t/blackhole_plugin-master.opt index dff15c6f136..e78cd2b1662 100644 --- a/mysql-test/t/blackhole_plugin-master.opt +++ b/mysql-test/t/blackhole_plugin-master.opt @@ -1 +1 @@ ---plugin_dir=../storage/blackhole/.libs +--plugin_dir=$BLACKHOLE_PLUGIN_DIR diff --git a/mysql-test/t/blackhole_plugin.test b/mysql-test/t/blackhole_plugin.test index 5c712233dc7..1de5b2d0499 100644 --- a/mysql-test/t/blackhole_plugin.test +++ b/mysql-test/t/blackhole_plugin.test @@ -1,6 +1,10 @@ --source include/not_windows.inc --source include/have_blackhole_plugin.inc +# When running in parallel we get +# Warning 1620 Plugin is busy and will be uninstalled on shutdown +--source include/not_parallel.inc + CREATE TABLE t1(a int) ENGINE=BLACKHOLE; DROP TABLE t1;