mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Make events_restart more stable by waiting for the server to be stopped before starting it again
This commit is contained in:
@ -4174,7 +4174,7 @@ void do_shutdown_server(struct st_command *command)
|
|||||||
/* Check that server dies */
|
/* Check that server dies */
|
||||||
while(timeout--){
|
while(timeout--){
|
||||||
if (my_kill(0, pid) < 0){
|
if (my_kill(0, pid) < 0){
|
||||||
DBUG_PRINT("info", ("Sleeping, timeout: %d", timeout));
|
DBUG_PRINT("info", ("Process %d does not exist anymore", pid));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
DBUG_PRINT("info", ("Sleeping, timeout: %d", timeout));
|
DBUG_PRINT("info", ("Sleeping, timeout: %d", timeout));
|
||||||
|
@ -1,13 +1,21 @@
|
|||||||
|
|
||||||
# Write file to make mysql-test-run.pl expect crash and restart
|
# Write file to make mysql-test-run.pl expect the "crash", but don't start
|
||||||
|
# it until it's told to
|
||||||
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
restart
|
wait
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Send shutdown to the connected server and give
|
# Send shutdown to the connected server and give
|
||||||
# it 10 seconds to die before zapping it
|
# it 10 seconds to die before zapping it
|
||||||
shutdown_server 10;
|
shutdown_server 10;
|
||||||
|
|
||||||
|
# Check server is gone
|
||||||
|
--source include/wait_until_disconnected.inc
|
||||||
|
|
||||||
|
# Write file to make mysql-test-run.pl start up the server again
|
||||||
|
--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
|
restart
|
||||||
|
EOF
|
||||||
|
|
||||||
# Turn on reconnect
|
# Turn on reconnect
|
||||||
--enable_reconnect
|
--enable_reconnect
|
||||||
|
@ -26,7 +26,7 @@ sub mtr_tonewfile($@);
|
|||||||
sub mtr_appendfile_to_file ($$);
|
sub mtr_appendfile_to_file ($$);
|
||||||
sub mtr_grab_file($);
|
sub mtr_grab_file($);
|
||||||
sub mtr_printfile($);
|
sub mtr_printfile($);
|
||||||
|
sub mtr_lastlinefromfile ($);
|
||||||
|
|
||||||
# Read a whole file, stripping leading and trailing whitespace.
|
# Read a whole file, stripping leading and trailing whitespace.
|
||||||
sub mtr_fromfile ($) {
|
sub mtr_fromfile ($) {
|
||||||
@ -94,5 +94,17 @@ sub mtr_printfile($) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub mtr_lastlinefromfile ($) {
|
||||||
|
my $file= shift;
|
||||||
|
my $text;
|
||||||
|
|
||||||
|
open(FILE,"<",$file) or mtr_error("can't open file \"$file\": $!");
|
||||||
|
while (my $line= <FILE>)
|
||||||
|
{
|
||||||
|
$text= $line;
|
||||||
|
}
|
||||||
|
close FILE;
|
||||||
|
return $text;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
@ -3320,10 +3320,29 @@ sub check_expected_crash_and_restart {
|
|||||||
my $expect_file= "$opt_vardir/tmp/".$mysqld->name().".expect";
|
my $expect_file= "$opt_vardir/tmp/".$mysqld->name().".expect";
|
||||||
if ( -f $expect_file )
|
if ( -f $expect_file )
|
||||||
{
|
{
|
||||||
mtr_report("Crash was expected, file '$expect_file' exists");
|
mtr_verbose("Crash was expected, file '$expect_file' exists");
|
||||||
# Start server with same settings as last time
|
|
||||||
mysqld_start($mysqld, $mysqld->{'started_opts'});
|
while (1){
|
||||||
unlink($expect_file);
|
|
||||||
|
# If last line in expect file starts with "wait"
|
||||||
|
# sleep a little and try again, thus allowing the
|
||||||
|
# test script to control when the server should start
|
||||||
|
# up again
|
||||||
|
my $last_line= mtr_lastlinefromfile($expect_file);
|
||||||
|
if ($last_line =~ /^wait/ )
|
||||||
|
{
|
||||||
|
mtr_verbose("Test says wait before restart");
|
||||||
|
mtr_milli_sleep(100);
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
|
unlink($expect_file);
|
||||||
|
|
||||||
|
# Start server with same settings as last time
|
||||||
|
mysqld_start($mysqld, $mysqld->{'started_opts'});
|
||||||
|
|
||||||
|
last;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
Reference in New Issue
Block a user