mirror of
https://github.com/MariaDB/server.git
synced 2025-11-27 07:59:41 +01: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 | ||