MOON
Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4
System: Linux vps.panamaemb.org.sg 3.10.0-1160.80.1.vz7.191.4 #1 SMP Thu Dec 15 20:31:06 MSK 2022 x86_64
User: panama (500)
PHP: 5.2.17
Disabled: NONE
Upload Files
File: //proc/3/cwd/usr/share/mysql-test/t/connect_debug.test
# This test makes no sense with the embedded server
--source include/not_embedded.inc

--source include/have_debug_sync.inc

# Save the initial number of concurrent sessions
--source include/count_sessions.inc

--echo
--echo # -- Bug#20201006: Spamming show processlist prevents old connection
--echo # -- threads from cleaning up.

--enable_connect_log
SET @saved_max_connections = @@global.max_connections;
SET GLOBAL max_connections = 2;

--echo
--echo # -- Check that we allow only max_connections + 1 connections here
--connect (con_1, localhost, root)
--connect (con_2, localhost, root)
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
--error ER_CON_COUNT_ERROR
--connect (con_3, localhost, root)

--echo
--echo # -- Ensure we have max_connections + 1 connections.
SELECT count(*)= @@global.max_connections + 1 FROM information_schema.processlist;

--echo
--echo # -- Take LOCK_thd_remove and close one connection then
--echo # attempt new one [should fail]...
SET DEBUG_SYNC='fill_schema_processlist_after_copying_threads SIGNAL disconnect_connection WAIT_FOR continue';
--send SELECT user FROM INFORMATION_SCHEMA.PROCESSLIST GROUP BY user;

--connection default
SET DEBUG_SYNC='now WAIT_FOR disconnect_connection';
--disconnect con_1

--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
--error ER_CON_COUNT_ERROR
--connect (con_3, localhost, root)

--echo
--echo # -- Release the lock. Now new connection should go through
SET DEBUG_SYNC='now SIGNAL continue';
--connection con_2
reap;

SET DEBUG_SYNC='RESET';

--echo
--echo # -- Waiting for connection to close...
let $wait_condition =
  SELECT COUNT(*) = 2
  FROM information_schema.processlist;
--source include/wait_condition.inc

--connect (con_3, localhost, root)

--echo
--echo # -- Closing connections...
--disconnect con_3
--disconnect con_2
--source include/wait_until_disconnected.inc

--connection default

--echo
--echo # -- Resetting variables...
SET GLOBAL max_connections= @saved_max_connections;

--disable_connect_log

--echo
--echo # -- End of Bug#20201006.
--echo

# Wait till all disconnects are completed
--source include/wait_until_count_sessions.inc