diff options
-rwxr-xr-x | Build-tools/Do-compile | 58 | ||||
-rwxr-xr-x | Build-tools/Do-rpm | 11 | ||||
-rw-r--r-- | Docs/manual.texi | 16 | ||||
-rw-r--r-- | tools/mysqlmanager.c | 20 |
4 files changed, 71 insertions, 34 deletions
diff --git a/Build-tools/Do-compile b/Build-tools/Do-compile index 9409e3752df..c03ca84c29d 100755 --- a/Build-tools/Do-compile +++ b/Build-tools/Do-compile @@ -19,7 +19,7 @@ if ($opt_innodb || $opt_bdb) chomp($host=`hostname`); $full_host_name=$host; -info("Compiling MySQL$version_suffix at $host$suffix, stage: $opt_stage\n"); +info("Compiling MySQL$version_suffix at $host, stage: $opt_stage\n"); $connect_option= ($opt_tcpip ? "--host=$host" : ""); $host =~ /^([^.-]*)/; $host=$1 . $opt_suffix; @@ -65,10 +65,11 @@ $sendmail=find("/usr/lib/sendmail","/usr/sbin/sendmail"); $sur= $opt_sur ? "/my/local/bin/sur" : ""; delete $ENV{'MYSQL_PWD'}; # Reset possibly password delete $ENV{'MY_BASEDIR_VERSION'}; -$ENV{'MYSQL_TCP_PORT'}= $mysql_tcp_port= 3334 + $opt_build_thread; +$ENV{'MYSQL_TCP_PORT'}= $mysql_tcp_port= 3334 + $opt_build_thread*2; $ENV{'MYSQL_UNIX_PORT'}=$mysql_unix_port="$opt_tmp/mysql$opt_suffix.build"; $ENV{"PERL5LIB"}="$pwd/$host/perl5:$pwd/$host/perl5/site_perl"; $slave_port=$mysql_tcp_port+16; +$manager_port=$mysql_tcp_port+1; if (-x "$host/bin/mysqladmin") { @@ -78,6 +79,7 @@ if (-x "$host/bin/mysqladmin") log_system("$host/bin/mysqladmin --no-defaults -u root -P 9306 -h $host -s shutdown"); log_system("$host/bin/mysqladmin --no-defaults -u root -P 9307 -h $host -s shutdown"); } +kill_all("mysqlmanager"); if ($opt_stage == 0) { @@ -110,7 +112,7 @@ if ($opt_stage == 0 && ! $opt_use_old_distribution) # Fix file times; This is needed because the time for files may be # in the future - system("touch timestamp; find $var -newer timestamp -print | xargs touch; rm -f timestamp"); + system("touch timestamp; find . -newer timestamp -print | xargs touch; rm -f timestamp"); sleep(2); # Ensure that files we don't want to rebuild are newer than other files foreach $name ("configure", @@ -207,13 +209,13 @@ if ($opt_stage <= 4 && !$opt_no_test) $tar_file =~ /(mysql-[^\/]*)\.tar/; $ver=$1; $test_dir="$pwd/$host/test/$ver"; -$ENV{"LD_LIBRARY_PATH"}= "$testdir/lib:" . $ENV{"LD_LIBRARY_PATH"}; +$ENV{"LD_LIBRARY_PATH"}= "$test_dir/lib:" . $ENV{"LD_LIBRARY_PATH"}; if ($opt_stage <= 5 && !$opt_no_test && !$opt_no_mysqltest) { system("mkdir $bench_tmpdir") if (! -d $bench_tmpdir); safe_cd("${test_dir}/mysql-test"); - check_system("./mysql-test-run --tmpdir=$bench_tmpdir --master_port=$mysql_tcp_port --slave_port=$slave_port --sleep=10", "tests were successful"); + check_system("./mysql-test-run --tmpdir=$bench_tmpdir --master_port=$mysql_tcp_port --slave_port=$slave_port --manager-port=$manager_port --sleep=10", "tests were successful"); } # Start the server if we are going to run any of the benchmarks @@ -235,7 +237,7 @@ if (!$opt_no_test) { $extra.=" --innodb_data_file_path=ibdata1:100M"; } - safe_system("./bin/mysqld --no-defaults --basedir . --datadir ./data --skip-l\ocking $extra >> $log 2>&1 &"); + safe_system("./bin/mysqld --no-defaults --basedir . --datadir ./data --skip-locking $extra >> $log 2>&1 &"); sleep(2); } @@ -315,7 +317,7 @@ exit 0; sub usage { print <<EOF; -$0 version 1.2 +$0 version 1.3 $0 takes the following options: @@ -329,7 +331,7 @@ Compile with support for Innodb tables Compile with support for Berkeley DB tables --user 'user_name' -Mail 'user_name'\@analytikerna.se if something went wrong. +Mail 'user_name'\@mysql.com if something went wrong. If user is empty then no mail is sent. --distribution 'distribution_file' @@ -528,3 +530,43 @@ sub rm_all } } } + +sub kill_all +{ + my ($pattern) = @_; + my ($USER,$BSD,$LINUX,$pscmd, $user, $pid); + $user=$ENV{'USER'}; + $BSD = -f '/vmunix' || $ENV{"OS"} eq "SunOS4"; + $LINUX = $^O eq 'linux'; + $pscmd = $BSD ? "/bin/ps -auxww" : $LINUX ? "/bin/ps axuw" : "/bin/ps -ef"; + + open(PS, "$pscmd|") || die "can't run $pscmd: $!"; + + # Catch any errors with eval. A bad pattern, for instance. + process: + while ($cand = <PS>) + { + chop($cand); + ($pid_user, $pid) = split(' ', $cand); + next if $pid == $$; + next process if (! ($cand =~ $pattern) || $pid_user ne $user) + &killpid($pid); + } +} + +sub killpid +{ + local($pid) = @_; + kill 15, $pid; + for (1..5) + { + sleep 2; + return if kill(0, $pid) == 0; + } + kill 9, $pid; + for (1..5) { + sleep 2; + return if kill(0, $pid) == 0; + } + print LOG "$pid will not die!\n"; +} diff --git a/Build-tools/Do-rpm b/Build-tools/Do-rpm index 046ba93a1dd..09e141184c8 100755 --- a/Build-tools/Do-rpm +++ b/Build-tools/Do-rpm @@ -90,10 +90,7 @@ while test $# -gt 0; do done echo "Removing old MySQL packages" -rm -rf $rpmdir/BUILD/mysql-* -rm -f $rpmdir/SOURCES/mysql-* -rm -f $rpmdir/SRPMS/MySQL-* -rm -f $rpmdir/SPEC/mysql-* +rm -f $bpath/NEW-RPMS/MySQL-*rpm if [ ! -d "$logdir" ]; then echo "$logdir does not exist, creating" @@ -111,6 +108,12 @@ log=$logdir/Log-RPM-`date +%y%m%d-%H%M` ( set -x +# remove old stuff +rm -rf $rpmdir/BUILD/mysql-* +rm -f $rpmdir/SOURCES/mysql-* +rm -f $rpmdir/SRPMS/MySQL-* +rm -f $rpmdir/SPEC/mysql-* + # Copy MySQL source and spec files #Sasha: I left the scp stuff commented out instead of deleted to make it diff --git a/Docs/manual.texi b/Docs/manual.texi index 8fad44c6ee0..4e544032792 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -24206,17 +24206,11 @@ for most systems, but one should be aware of it. @cindex design, limitations @cindex limitations, design -Because MySQL uses extremely fast table locking (multiple readers / -single writers) the biggest remaining problem is a mix of a steady stream of -inserts and slow selects on the same table. - -We believe that for a huge number of systems the extremely fast -performance in other cases make this choice a win. This case is usually -also possible to solve by having multiple copies of the table, but it -takes more effort and hardware. - -We are also working on some extensions to solve this problem for some -common application niches. +When using the MyISAM table handler, MySQL uses extremely fast table +locking (multiple readers / single writers). The biggest problem with +this table type is a if you have a mix of a steady stream of updates and +slow selects on the same table. If this is a problem with some tables, +you can use another table type for these. @xref{Table types}. MySQL can work with both transactional and not transactional tables. To be able to work smoothly with not transactional tables (which can't diff --git a/tools/mysqlmanager.c b/tools/mysqlmanager.c index 071e14562a7..3a95b4e9a49 100644 --- a/tools/mysqlmanager.c +++ b/tools/mysqlmanager.c @@ -21,27 +21,25 @@ **/ #include <my_global.h> -#include <my_sys.h> -#include <m_string.h> +#include <my_pthread.h> #include <mysql.h> #include <mysql_version.h> -#include <m_ctype.h> -#include <my_config.h> +#include <mysqld_error.h> +#include <my_sys.h> #include <my_dir.h> +#include <m_string.h> +#include <m_ctype.h> #include <hash.h> -#include <mysqld_error.h> -#include <stdio.h> -#include <stdlib.h> #include <getopt.h> #include <stdarg.h> #include <sys/stat.h> -#include <sys/types.h> -#include <sys/wait.h> -#include <unistd.h> #include <errno.h> #include <violite.h> -#include <my_pthread.h> #include <md5.h> +#include <signal.h> +#ifdef HAVE_SYS_WAIT_H +#include <sys/wait.h> +#endif #define MANAGER_VERSION "1.0" #define MANAGER_GREETING "MySQL Server Management Daemon v. 1.0" |