mirror of
https://github.com/MariaDB/server.git
synced 2025-08-28 13:21:36 +02:00
![]() Remove one of the major sources of race condiitons in mariadb-test. Normally, mariadb_close() sends COM_QUIT to the server and immediately disconnects. In mariadb-test it means the test can switch to another connection and sends queries to the server before the server even started parsing the COM_QUIT packet and these queries can see the connection as fully active, as it didn't reach dispatch_command yet. This is a major source of instability in tests and many - but not all, still less than a half - tests employ workarounds. The correct one is a pair count_sessions.inc/wait_until_count_sessions.inc. Also very popular was wait_until_disconnected.inc, which was completely useless, because it verifies that the connection is closed, and after disconnect it always is, it didn't verify whether the server processed COM_QUIT. Sadly the placebo was as widely used as the real thing. Let's fix this by making mariadb-test `disconnect` command _to wait_ for the server to confirm. This makes almost all workarounds redundant. In some cases count_sessions.inc/wait_until_count_sessions.inc is still needed, though, as only `disconnect` command is changed: * after external tools, like `exec $MYSQL` * after failed `connect` command * replication, after `STOP SLAVE` * Federated/CONNECT/SPIDER/etc after `DROP TABLE` and also in some XA tests, because an XA transaction is dissociated from the THD very late, after the server has closed the client connection. Collateral cleanups: fix comments, remove some redundant statements: * DROP IF EXISTS if nothing is known to exist * DROP table/view before DROP DATABASE * REVOKE privileges before DROP USER etc |
||
---|---|---|
.. | ||
basic.inc | ||
basic.test | ||
bug_32831765.test | ||
concurrent_insert.test | ||
crash_recovery.opt | ||
crash_recovery.test | ||
create.opt | ||
create.test | ||
foreign_key_check.test | ||
foreign_key_update.test | ||
ft_result_cache_limit.test | ||
fts_kill_query.test | ||
fts_sync_commit_resiliency.opt | ||
fts_sync_commit_resiliency.test | ||
fulltext.test | ||
fulltext2.test | ||
fulltext3.test | ||
fulltext_cache.test | ||
fulltext_distinct.test | ||
fulltext_left_join.test | ||
fulltext_misc.test | ||
fulltext_multi.test | ||
fulltext_order_by.test | ||
fulltext_update.test | ||
fulltext_var.test | ||
index_table.opt | ||
index_table.test | ||
innodb-fts-ddl.opt | ||
innodb-fts-ddl.test | ||
innodb-fts-fic.test | ||
innodb_ft_aux_table.opt | ||
innodb_ft_aux_table.test | ||
innodb_fts_large_records.test | ||
innodb_fts_misc.test | ||
innodb_fts_misc_1.opt | ||
innodb_fts_misc_1.test | ||
innodb_fts_multiple_index.test | ||
innodb_fts_plugin.test | ||
innodb_fts_proximity.test | ||
innodb_fts_result_cache_limit.test | ||
innodb_fts_stopword_charset.test | ||
innodb_fts_transaction.test | ||
limit_union.test | ||
misc.test | ||
misc_1.test | ||
misc_debug.test | ||
misc_debug2.test | ||
multiple_index.test | ||
opt.opt | ||
opt.test | ||
phrase.opt | ||
phrase.test | ||
plugin_debug.test | ||
result_cache_limit.test | ||
savepoint.test | ||
stopword.inc | ||
stopword.opt | ||
stopword.test | ||
subexpr.test | ||
sync.opt | ||
sync.test | ||
sync_block.test | ||
sync_ddl.test |