mirror of
https://github.com/MariaDB/server.git
synced 2025-01-27 17:33:44 +01:00
97744101f4
GOES AWAY, MYSQL QUITS WORKING. Analysis: ----------------- Issue in this bug and in bug 11907705 is, the socket file or fifo file is set for general log at command line while starting the server. But currently, only regular file can be set for the general log. Instead of reporting any error, the provided files are opened for writing and continued. Because of this issues mentioned in the bug reports are seen. As mentioned, only when any non-regular file is set for general log at command line while starting the server, these issues are seen. If general log file is set to non-regular file from CLI using system variable general_log_file then error is reported. These issues can also be faced with slow query log file, if it is set to non-regular file. Fix: ----------------- Currently while starting the server if we fail to open log file then we report an error, disable logging to file and continue. To fix issue reported code is modified to check whether file is regular file or not before opening it. If file is not a regular file then error is logged to error log and logging to file is disabled.
65 lines
2.1 KiB
Text
65 lines
2.1 KiB
Text
#
|
|
--source include/not_windows.inc
|
|
--source include/force_restart.inc
|
|
--source include/not_embedded.inc
|
|
|
|
#
|
|
# Bug#14757009 : WHEN THE GENERAL_LOG IS A SOCKET AND THE READER GOES AWAY,
|
|
# MYSQL QUITS WORKING.
|
|
#
|
|
call mtr.add_suppression("Could not use");
|
|
|
|
--let $gen_log_file= $MYSQLTEST_VARDIR/tmp/general_log.fifo
|
|
--let $slow_query_log_file= $MYSQLTEST_VARDIR/tmp/slow_log.fifo
|
|
--let GREP_FILE=$MYSQLTEST_VARDIR/log/mysqld.1.err
|
|
|
|
--exec mkfifo $gen_log_file
|
|
--exec mkfifo $slow_query_log_file
|
|
|
|
--echo # Case 1: Setting fife file to general_log_file and slow_query_log_file
|
|
--echo # system variable.
|
|
# Only regular files can be set to general log. Setting fifo file to general log
|
|
# reports an error.
|
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
|
--error ER_WRONG_VALUE_FOR_VAR
|
|
--eval SET GLOBAL general_log_file="$gen_log_file";
|
|
|
|
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
|
|
--error ER_WRONG_VALUE_FOR_VAR
|
|
--eval SET GLOBAL slow_query_log_file="$slow_query_log_file";
|
|
|
|
--echo # Case 2: Starting server with fifo file as general log file
|
|
--echo # and slow query log file.
|
|
# Restart server with fifo file as general log file.
|
|
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
|
--shutdown_server 60
|
|
--source include/wait_until_disconnected.inc
|
|
--enable_reconnect
|
|
# Write file to make mysql-test-run.pl start up the server again
|
|
--exec echo "restart: --general-log-file=$gen_log_file --slow-query-log-file=$slow_query_log_file" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
|
--source include/wait_until_connected_again.inc
|
|
|
|
# With fix error should be reported in the error log file if file is not a
|
|
# regular file.
|
|
--perl
|
|
my $file= $ENV{'GREP_FILE'};
|
|
my $pattern= "Turning logging off for the whole duration";
|
|
open(FILE, "$file") or die("Unable to open $file: $!\n");
|
|
my $count = 0;
|
|
while (<FILE>) {
|
|
if ($_ =~ m/$pattern/) {
|
|
$count++;
|
|
break;
|
|
}
|
|
}
|
|
if ($count >= 2){
|
|
print "Setting fifo file as general log file and slow query log failed.\n";
|
|
} else {
|
|
print "test failed.\n";
|
|
}
|
|
close(FILE);
|
|
EOF
|
|
|
|
# Cleanup
|
|
--remove_file $gen_log_file
|
|
--remove_file $slow_query_log_file
|