summaryrefslogtreecommitdiff
path: root/client/mysqladmin.c
diff options
context:
space:
mode:
authorunknown <monty@mashka.mysql.fi>2003-01-07 16:53:10 +0200
committerunknown <monty@mashka.mysql.fi>2003-01-07 16:53:10 +0200
commitb3b66f640841e459e18a3d4300766b56f0cf3bc8 (patch)
tree568a37c17ae407938ff1ec3cae7005605d52e7c6 /client/mysqladmin.c
parente3c7f4d85ec4caf59fc408cf5643e5dc64e9a3d4 (diff)
downloadmariadb-git-b3b66f640841e459e18a3d4300766b56f0cf3bc8.tar.gz
Portability fixes
Fixed test suite for HPUX 10.20 and MacOSX Build-tools/Do-compile: Added timeout to mysqladmin shutdown commands Kill old running mysqld started by earlier runs Removed run time warning from LD_LIBRARY_PATH client/mysqladmin.c: Return 1 if pid file isn't deleted on shutdown. Fix error message if pid file is not deleted client/mysqltest.c: Always allow --debug flag (Makes it easier to run mysql-test-run) mysql-test/mysql-test-run.sh: A lot of safety fixes. This fixes some problems with test suite for HPUX 10.20 and MacOSX sql-bench/bench-init.pl.sh: Allow tests to change time limit. sql-bench/crash-me.sh: Indentation cleanups Added DROP for a created table sql-bench/test-alter-table.sh: Added default time limit Changed test to be estimated to get down run time. Fixed that add_multi_col is detected sql-bench/test-insert.sh: Comment cleanup sql/mysql_priv.h: Removed not needed prototype. sql/mysqld.cc: Removed DBUG warnings Removed default argument for clean_up() and made it static. More comments. Ignore SIGHUP during shutdown sql/net_pkg.cc: More comments sql/slave.cc: Added DBUG_PRINT messages
Diffstat (limited to 'client/mysqladmin.c')
-rw-r--r--client/mysqladmin.c62
1 files changed, 40 insertions, 22 deletions
diff --git a/client/mysqladmin.c b/client/mysqladmin.c
index 00af8c592ec..5446718dea6 100644
--- a/client/mysqladmin.c
+++ b/client/mysqladmin.c
@@ -24,7 +24,7 @@
#endif
#include <sys/stat.h>
-#define ADMIN_VERSION "8.38"
+#define ADMIN_VERSION "8.39"
#define MAX_MYSQL_VAR 128
#define SHUTDOWN_DEF_TIMEOUT 3600 /* Wait for shutdown */
#define MAX_TRUNC_LENGTH 3
@@ -70,8 +70,8 @@ static void print_relative_header();
static void print_relative_line();
static void truncate_names();
static my_bool get_pidfile(MYSQL *mysql, char *pidfile);
-static void wait_pidfile(char *pidfile, time_t last_modified,
- struct stat *pidfile_status);
+static my_bool wait_pidfile(char *pidfile, time_t last_modified,
+ struct stat *pidfile_status);
static void store_values(MYSQL_RES *result);
/*
@@ -481,7 +481,8 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
printf("Shutdown signal sent to server; Waiting for pid file to disappear\n");
/* Wait until pid file is gone */
- wait_pidfile(pidfile, last_modified, &pidfile_status);
+ if (wait_pidfile(pidfile, last_modified, &pidfile_status))
+ return -1;
}
break;
}
@@ -1110,34 +1111,51 @@ static my_bool get_pidfile(MYSQL *mysql, char *pidfile)
return 1; /* Error */
}
+/*
+ Return 1 if pid file didn't disappear or change
+*/
-static void wait_pidfile(char *pidfile, time_t last_modified,
- struct stat *pidfile_status)
+static my_bool wait_pidfile(char *pidfile, time_t last_modified,
+ struct stat *pidfile_status)
{
char buff[FN_REFLEN];
- int fd = -1;
- uint count=0;
+ int error= 1;
+ uint count= 0;
+ DBUG_ENTER("wait_pidfile");
system_filename(buff, pidfile);
- while (count++ <= opt_shutdown_timeout && !interrupted &&
- (!last_modified || (last_modified == pidfile_status->st_mtime)) &&
- (fd= my_open(buff, O_RDONLY, MYF(0))) >= 0)
+ do
{
- if (!my_close(fd,MYF(0)))
- fd= -1;
+ int fd;
+ if ((fd= my_open(buff, O_RDONLY, MYF(0))) < 0)
+ {
+ error= 0;
+ break;
+ }
+ (void) my_close(fd,MYF(0));
+ if (last_modified && !stat(pidfile, pidfile_status))
+ {
+ if (last_modified != pidfile_status->st_mtime)
+ {
+ /* File changed; Let's assume that mysqld did restart */
+ if (opt_verbose)
+ printf("pid file '%s' changed while waiting for it to disappear!\nmysqld did probably restart\n",
+ buff);
+ error= 0;
+ break;
+ }
+ }
+ if (count++ == opt_shutdown_timeout)
+ break;
sleep(1);
- if (last_modified && stat(pidfile, pidfile_status))
- last_modified= 0;
- }
- if (opt_verbose && last_modified &&
- last_modified != pidfile_status->st_mtime)
- printf("Warning; pid file '%s' changed while waiting for it to disappear!\n",
- buff);
- if (fd >= 0)
+ } while (!interrupted);
+
+ if (error)
{
- my_close(fd,MYF(0));
+ DBUG_PRINT("warning",("Pid file didn't disappear"));
fprintf(stderr,
"Warning; Aborted waiting on pid file: '%s' after %d seconds\n",
buff, count-1);
}
+ DBUG_RETURN(error);
}