mirror of
https://github.com/MariaDB/server.git
synced 2025-02-07 06:12:18 +01:00
061adae9a2
On Windows systems, occurrences of ERROR_SHARING_VIOLATION due to conflicting share modes between processes accessing the same file can result in CreateFile failures. mysys' my_open() already incorporates a workaround by implementing wait/retry logic on Windows. But this does not help if files are opened using shell redirection like mysqltest traditionally did it, i.e via --echo exec "some text" > output_file In such cases, it is cmd.exe, that opens the output_file, and it won't do any sharing-violation retries. This commit addresses the issue by introducing a new built-in command, 'write_line', in mysqltest. This new command serves as a brief alternative to 'write_file', with a single line output, that also resolves variables like "exec" would. Internally, this command will use my_open(), and therefore retry-on-error logic. Hopefully this will eliminate the very sporadic "can't open file because it is used by another process" error on CI.
100 lines
2.9 KiB
Text
100 lines
2.9 KiB
Text
# Tests for PERFORMANCE_SCHEMA
|
|
|
|
--source include/not_embedded.inc
|
|
--source include/have_perfschema.inc
|
|
|
|
# Verify that the configuration options were applied correctly to the
|
|
# performance_schema.setup_instruments table. These instruments that are known to persist across
|
|
# platforms and the various compile options.
|
|
|
|
--echo #
|
|
--echo # Verify that the configuration file defaults were processed correctly
|
|
--echo #
|
|
|
|
SELECT * FROM performance_schema.setup_instruments
|
|
WHERE name IN (
|
|
'wait/synch/mutex/sql/LOCK_user_conn',
|
|
'wait/synch/mutex/sql/LOCK_uuid_generator',
|
|
'wait/synch/mutex/sql/LOCK_plugin',
|
|
'stage/sql/creating table')
|
|
AND enabled = 'yes' AND timed = 'no'
|
|
ORDER BY name;
|
|
|
|
SELECT * FROM performance_schema.setup_instruments
|
|
WHERE name = 'wait/synch/mutex/sql/LOCK_thd_list'
|
|
AND enabled = 'no' AND timed = 'no';
|
|
|
|
SELECT * FROM performance_schema.setup_instruments
|
|
WHERE name IN (
|
|
'wait/synch/mutex/sql/LOG_INFO::lock',
|
|
'wait/synch/mutex/sql/THD::LOCK_thd_list')
|
|
AND enabled = 'yes' AND timed = 'yes'
|
|
ORDER BY name;
|
|
|
|
SELECT * FROM performance_schema.setup_instruments
|
|
WHERE name = 'wait/synch/mutex/sql/hash_filo::lock'
|
|
AND enabled = 'no' AND timed = 'no'
|
|
ORDER BY name;
|
|
|
|
--echo #
|
|
--echo # Verify that the memory instruments are never timed
|
|
--echo #
|
|
SELECT * FROM performance_schema.setup_instruments
|
|
WHERE name like 'memory/%'
|
|
AND timed = 'YES';
|
|
|
|
--echo #
|
|
--echo # Verify that the memory/performance_schema instruments are never disabled
|
|
--echo #
|
|
SELECT * FROM performance_schema.setup_instruments
|
|
WHERE name like 'memory/performance_schema/%'
|
|
AND enabled = 'NO';
|
|
|
|
|
|
--echo #
|
|
--echo # Verify that the instrument startup settings are not not visible.
|
|
--echo #
|
|
SHOW VARIABLES LIKE "%/wait/synch/mutex%";
|
|
|
|
--echo #
|
|
--echo # Verify command line options are processed correctly
|
|
--echo #
|
|
|
|
# The instrument wait/io/table/sql/handler should be enabled and timed. We will
|
|
# restart the server with the instrument disabled from the command line.
|
|
--echo #
|
|
--echo # Verify that wait/io/table/sql/handler is enabled and timed
|
|
--echo #
|
|
SELECT * FROM performance_schema.setup_instruments
|
|
WHERE name like "%wait/io/table/sql/handler%";
|
|
|
|
# Write file to make mysql-test-run.pl wait for the server to stop
|
|
--write_line wait $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
|
|
|
# Restart the server
|
|
--echo #
|
|
--echo # Stop server
|
|
--send_shutdown
|
|
--source include/wait_until_disconnected.inc
|
|
|
|
--echo # Restart server with wait/io/table/sql/handler disabled
|
|
|
|
--write_line "restart:--loose-performance-schema-instrument=%wait/io/table/sql/%=off" $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
|
|
|
# Turn on reconnect
|
|
--echo # Enable reconnect
|
|
--enable_reconnect
|
|
|
|
# Wait for server to be back online again
|
|
--echo # Wait until connected again
|
|
--source include/wait_until_connected_again.inc
|
|
|
|
# Turn off reconnect again
|
|
--echo # Disable reconnect
|
|
--disable_reconnect
|
|
|
|
--echo #
|
|
--echo # Verify that wait/io/table is disabled
|
|
--echo #
|
|
SELECT * FROM performance_schema.setup_instruments
|
|
WHERE name like "%wait/io/table/sql/handler%";
|