Loading client/mysqladmin.c +26 −6 Original line number Diff line number Diff line Loading @@ -69,7 +69,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); static void wait_pidfile(char *pidfile, my_bool check_pidfile_status, time_t last_modified, struct stat pidfile_status); static void store_values(MYSQL_RES *result); /* Loading Loading @@ -454,12 +455,22 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv) { char pidfile[FN_REFLEN]; my_bool got_pidfile= 0; time_t last_modified= 0; /* to keep compiler happy */ struct stat pidfile_status; my_bool check_pidfile_status= 1; /* Only wait for pidfile on local connections If pidfile doesn't exist, continue without pid file checking */ if (mysql->unix_socket) got_pidfile= !get_pidfile(mysql, pidfile); if (got_pidfile && stat(pidfile, &pidfile_status)) check_pidfile_status= 0; else last_modified= pidfile_status.st_mtime; if (mysql_shutdown(mysql)) { my_printf_error(0,"shutdown failed; error: '%s'",MYF(ME_BELL), Loading @@ -471,7 +482,10 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv) { if (opt_verbose) printf("Shutdown signal sent to server; Waiting for pid file to disappear\n"); wait_pidfile(pidfile); /* Wait until pid file is gone */ /* Wait until pid file is gone */ wait_pidfile(pidfile, check_pidfile_status, last_modified, pidfile_status); } break; } Loading Loading @@ -1101,7 +1115,8 @@ static my_bool get_pidfile(MYSQL *mysql, char *pidfile) } static void wait_pidfile(char *pidfile) static void wait_pidfile(char *pidfile, my_bool check_pidfile_status, time_t last_modified, struct stat pidfile_status) { char buff[FN_REFLEN]; int fd; Loading @@ -1109,11 +1124,16 @@ static void wait_pidfile(char *pidfile) system_filename(buff, pidfile); while ((fd = my_open(buff, O_RDONLY, MYF(0))) >= 0 && count++ < opt_shutdown_timeout && !interrupted) count++ < opt_shutdown_timeout && !interrupted && (!check_pidfile_status || (last_modified == pidfile_status.st_mtime))) { my_close(fd,MYF(0)); sleep(1); if (stat(pidfile, &pidfile_status)) check_pidfile_status= 0; } if (check_pidfile_status && (last_modified != pidfile_status.st_mtime)) printf("Warning; pid file changed while waiting for it to disappear!\n"); if (fd >= 0) { my_close(fd,MYF(0)); Loading Loading
client/mysqladmin.c +26 −6 Original line number Diff line number Diff line Loading @@ -69,7 +69,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); static void wait_pidfile(char *pidfile, my_bool check_pidfile_status, time_t last_modified, struct stat pidfile_status); static void store_values(MYSQL_RES *result); /* Loading Loading @@ -454,12 +455,22 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv) { char pidfile[FN_REFLEN]; my_bool got_pidfile= 0; time_t last_modified= 0; /* to keep compiler happy */ struct stat pidfile_status; my_bool check_pidfile_status= 1; /* Only wait for pidfile on local connections If pidfile doesn't exist, continue without pid file checking */ if (mysql->unix_socket) got_pidfile= !get_pidfile(mysql, pidfile); if (got_pidfile && stat(pidfile, &pidfile_status)) check_pidfile_status= 0; else last_modified= pidfile_status.st_mtime; if (mysql_shutdown(mysql)) { my_printf_error(0,"shutdown failed; error: '%s'",MYF(ME_BELL), Loading @@ -471,7 +482,10 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv) { if (opt_verbose) printf("Shutdown signal sent to server; Waiting for pid file to disappear\n"); wait_pidfile(pidfile); /* Wait until pid file is gone */ /* Wait until pid file is gone */ wait_pidfile(pidfile, check_pidfile_status, last_modified, pidfile_status); } break; } Loading Loading @@ -1101,7 +1115,8 @@ static my_bool get_pidfile(MYSQL *mysql, char *pidfile) } static void wait_pidfile(char *pidfile) static void wait_pidfile(char *pidfile, my_bool check_pidfile_status, time_t last_modified, struct stat pidfile_status) { char buff[FN_REFLEN]; int fd; Loading @@ -1109,11 +1124,16 @@ static void wait_pidfile(char *pidfile) system_filename(buff, pidfile); while ((fd = my_open(buff, O_RDONLY, MYF(0))) >= 0 && count++ < opt_shutdown_timeout && !interrupted) count++ < opt_shutdown_timeout && !interrupted && (!check_pidfile_status || (last_modified == pidfile_status.st_mtime))) { my_close(fd,MYF(0)); sleep(1); if (stat(pidfile, &pidfile_status)) check_pidfile_status= 0; } if (check_pidfile_status && (last_modified != pidfile_status.st_mtime)) printf("Warning; pid file changed while waiting for it to disappear!\n"); if (fd >= 0) { my_close(fd,MYF(0)); Loading