Commit 74f773b4 authored by Bjorn Munch's avatar Bjorn Munch

Bug #59148 'INSTALL PLUGIN rpl_semi_sync_master' fails in release build with debug binaries

Do as mysqld_safe: if running mysqld-debug, plugins are in debug subdirs
NB mtr --debug won't work in this context until 47141 is fixed
Also moved read_plugin_defs; no point running this in all worker threads
parent 215efed1
...@@ -417,6 +417,14 @@ sub main { ...@@ -417,6 +417,14 @@ sub main {
my $server_port = $server->sockport(); my $server_port = $server->sockport();
mtr_report("Using server port $server_port"); mtr_report("Using server port $server_port");
# --------------------------------------------------------------------------
# Read definitions from include/plugin.defs
#
read_plugin_defs("include/plugin.defs");
# Simplify reference to semisync plugins
$ENV{'SEMISYNC_PLUGIN_OPT'}= $ENV{'SEMISYNC_MASTER_PLUGIN_OPT'};
# Create child processes # Create child processes
my %children; my %children;
for my $child_num (1..$opt_parallel){ for my $child_num (1..$opt_parallel){
...@@ -1973,7 +1981,7 @@ sub find_plugin($$) ...@@ -1973,7 +1981,7 @@ sub find_plugin($$)
{ {
my ($plugin, $location) = @_; my ($plugin, $location) = @_;
my $plugin_filename; my $plugin_filename;
if (IS_WINDOWS) if (IS_WINDOWS)
{ {
$plugin_filename = $plugin.".dll"; $plugin_filename = $plugin.".dll";
...@@ -1983,13 +1991,13 @@ sub find_plugin($$) ...@@ -1983,13 +1991,13 @@ sub find_plugin($$)
$plugin_filename = $plugin.".so"; $plugin_filename = $plugin.".so";
} }
my $lib_example_plugin= my $lib_plugin=
mtr_file_exists(vs_config_dirs($location,$plugin_filename), mtr_file_exists(vs_config_dirs($location,$plugin_filename),
"$basedir/lib/plugin/".$plugin_filename, "$basedir/lib/plugin/".$plugin_filename,
"$basedir/$location/.libs/".$plugin_filename, "$basedir/$location/.libs/".$plugin_filename,
"$basedir/lib/mysql/plugin/".$plugin_filename, "$basedir/lib/mysql/plugin/".$plugin_filename,
); );
return $lib_example_plugin; return $lib_plugin;
} }
# #
...@@ -1999,10 +2007,16 @@ sub find_plugin($$) ...@@ -1999,10 +2007,16 @@ sub find_plugin($$)
sub read_plugin_defs($) sub read_plugin_defs($)
{ {
my ($defs_file)= @_; my ($defs_file)= @_;
my $running_debug= 0;
open(PLUGDEF, '<', $defs_file) open(PLUGDEF, '<', $defs_file)
or mtr_error("Can't read plugin defintions file $defs_file"); or mtr_error("Can't read plugin defintions file $defs_file");
# Need to check if we will be running mysqld-debug
if ($opt_debug) {
$running_debug= 1 if find_mysqld($basedir) =~ /-debug$/;
}
while (<PLUGDEF>) { while (<PLUGDEF>) {
next if /^#/; next if /^#/;
my ($plug_file, $plug_loc, $plug_var, $plug_names)= split; my ($plug_file, $plug_loc, $plug_var, $plug_names)= split;
...@@ -2010,6 +2024,9 @@ sub read_plugin_defs($) ...@@ -2010,6 +2024,9 @@ sub read_plugin_defs($)
next unless $plug_file; next unless $plug_file;
mtr_error("Lines in $defs_file must have 3 or 4 items") unless $plug_var; mtr_error("Lines in $defs_file must have 3 or 4 items") unless $plug_var;
# If running debug server, plugins will be in 'debug' subdirectory
$plug_file= "debug/$plug_file" if $running_debug;
my ($plugin)= find_plugin($plug_file, $plug_loc); my ($plugin)= find_plugin($plug_file, $plug_loc);
# Set env. variables that tests may use, set to empty if plugin # Set env. variables that tests may use, set to empty if plugin
...@@ -2074,18 +2091,9 @@ sub environment_setup { ...@@ -2074,18 +2091,9 @@ sub environment_setup {
push(@ld_library_paths, "$basedir/storage/ndb/src/.libs"); push(@ld_library_paths, "$basedir/storage/ndb/src/.libs");
} }
# --------------------------------------------------------------------------
# Read definitions from include/plugin.defs
#
# Plugin settings should no longer be added here, instead # Plugin settings should no longer be added here, instead
# place definitions in include/plugin.defs. # place definitions in include/plugin.defs.
# See comment in that file for details. # See comment in that file for details.
# --------------------------------------------------------------------------
read_plugin_defs("include/plugin.defs");
# Simplify reference to semisync plugins
$ENV{'SEMISYNC_PLUGIN_OPT'}= $ENV{'SEMISYNC_MASTER_PLUGIN_OPT'};
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
# Valgrind need to be run with debug libraries otherwise it's almost # Valgrind need to be run with debug libraries otherwise it's almost
# impossible to add correct supressions, that means if "/usr/lib/debug" # impossible to add correct supressions, that means if "/usr/lib/debug"
......
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