mirror of
https://github.com/MariaDB/server.git
synced 2025-05-28 13:01:41 +03:00
All failing cases were attempts to use connection after the server was brought down and restarted. Connections used client reconnect option. The reason for failures is the behavior of sockets on Windows: for a short period after crash (short enough to make the error not reproducible under debugger), write to socket on client side would succeed but subsequent read would fail. MYSQL_OPT_RECONNECT does not really help in this case , because in the case given here ,as mysql_real_query() (which can handle reconnect option) succeeds and mysql_read_results() (can't handle reconnect) fails. The fix is adding --include wait_until_connected_again.inc to appropriate places in test. This ensures that read errors are caught and connection is recreated.
42 lines
1.2 KiB
PHP
42 lines
1.2 KiB
PHP
# Maria helper script
|
|
# Copies tables' data and index file to other directory, and control file.
|
|
# Tables are $mms_tname1...$mms_tname[$mms_tables].
|
|
# Later, mysqld is shutdown, and that snapshot is put back into the
|
|
# datadir, control file too ("flashing recovery's brain"), and recovery is let
|
|
# to run on it (see maria_verify_recovery.inc).
|
|
|
|
# API:
|
|
# set $mms_tname to a string, and $mms_tables to a number N, the script will
|
|
# cover tables mysqltest.$mms_tname1,...$mms_tnameN
|
|
|
|
|
|
connection admin;
|
|
--source include/wait_until_connected_again.inc
|
|
|
|
let $mms_table_to_use=$mms_tables;
|
|
let $mms_purpose=feeding_recovery;
|
|
let $mms_copy=1;
|
|
|
|
--disable_query_log
|
|
--disable_warnings
|
|
eval drop database if exists mysqltest_for_$mms_purpose;
|
|
--enable_warnings
|
|
eval create database mysqltest_for_$mms_purpose;
|
|
--enable_query_log
|
|
|
|
while ($mms_table_to_use)
|
|
{
|
|
-- source include/maria_make_snapshot.inc
|
|
dec $mms_table_to_use;
|
|
}
|
|
let $mms_copy=0;
|
|
|
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
|
--disable_warnings
|
|
-- error 0,1
|
|
remove_file $MYSQLTEST_VARDIR/tmp/mms_for_$mms_purpose.aria_log_control;
|
|
--enable_warnings
|
|
copy_file $MYSQLD_DATADIR/$MARIA_LOG/aria_log_control $MYSQLTEST_VARDIR/tmp/mms_for_$mms_purpose.aria_log_control;
|
|
|
|
connection default;
|