Fix for Bug#35074: max_used_connections is not correct.
The problem was that number of threads was used to calculate max_used_connections. The fix is to use number of active connections.
This commit is contained in:
parent
18125abf93
commit
5c1e58d4fa
@ -162,14 +162,48 @@ root
|
|||||||
|
|
||||||
# -- Resetting variables...
|
# -- Resetting variables...
|
||||||
SET GLOBAL max_connections = 151;
|
SET GLOBAL max_connections = 151;
|
||||||
|
|
||||||
|
# -- Stopping Event Scheduler...
|
||||||
SET GLOBAL event_scheduler = OFF;
|
SET GLOBAL event_scheduler = OFF;
|
||||||
|
# -- Waiting for Event Scheduler to stop...
|
||||||
|
|
||||||
# -- That's it. Closing connections...
|
# -- That's it. Closing connections...
|
||||||
|
|
||||||
# -- Restoring default connection...
|
# -- Restoring default connection...
|
||||||
|
|
||||||
|
# -- Waiting for connections to close...
|
||||||
|
|
||||||
|
DROP USER mysqltest_u1@localhost;
|
||||||
|
|
||||||
# -- End of Bug#33507.
|
# -- End of Bug#33507.
|
||||||
|
|
||||||
|
# -- Bug#35074: max_used_connections is not correct.
|
||||||
|
|
||||||
|
FLUSH STATUS;
|
||||||
|
|
||||||
|
SHOW STATUS LIKE 'max_used_connections';
|
||||||
|
Variable_name Value
|
||||||
|
Max_used_connections 1
|
||||||
|
|
||||||
|
# -- Starting Event Scheduler...
|
||||||
|
SET GLOBAL event_scheduler = ON;
|
||||||
|
# -- Waiting for Event Scheduler to start...
|
||||||
|
|
||||||
|
# -- Opening a new connection to check max_used_connections...
|
||||||
|
|
||||||
|
# -- Check that max_used_connections hasn't changed.
|
||||||
|
SHOW STATUS LIKE 'max_used_connections';
|
||||||
|
Variable_name Value
|
||||||
|
Max_used_connections 2
|
||||||
|
|
||||||
|
# -- Closing new connection...
|
||||||
|
|
||||||
|
# -- Stopping Event Scheduler...
|
||||||
|
SET GLOBAL event_scheduler = OFF;
|
||||||
|
# -- Waiting for Event Scheduler to stop...
|
||||||
|
|
||||||
|
# -- End of Bug#35074.
|
||||||
|
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
# -- End of 5.1 tests
|
# -- End of 5.1 tests
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
|
@ -209,22 +209,97 @@ SELECT user FROM information_schema.processlist ORDER BY id;
|
|||||||
--echo # -- Resetting variables...
|
--echo # -- Resetting variables...
|
||||||
|
|
||||||
--eval SET GLOBAL max_connections = $saved_max_connections
|
--eval SET GLOBAL max_connections = $saved_max_connections
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # -- Stopping Event Scheduler...
|
||||||
SET GLOBAL event_scheduler = OFF;
|
SET GLOBAL event_scheduler = OFF;
|
||||||
|
|
||||||
|
--echo # -- Waiting for Event Scheduler to stop...
|
||||||
|
let $wait_condition =
|
||||||
|
SELECT COUNT(*) = 0
|
||||||
|
FROM information_schema.processlist
|
||||||
|
WHERE user = 'event_scheduler';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
--echo # -- That's it. Closing connections...
|
--echo # -- That's it. Closing connections...
|
||||||
--disconnect con_1
|
--disconnect con_1
|
||||||
--disconnect con_2
|
--disconnect con_2
|
||||||
|
--disconnect con_3
|
||||||
--disconnect con_super_1
|
--disconnect con_super_1
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
--echo # -- Restoring default connection...
|
--echo # -- Restoring default connection...
|
||||||
--connect (default,localhost,root,,test)
|
--connect (default,localhost,root,,test)
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # -- Waiting for connections to close...
|
||||||
|
let $wait_condition =
|
||||||
|
SELECT COUNT(*) = 1
|
||||||
|
FROM information_schema.processlist
|
||||||
|
WHERE db = 'test';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
DROP USER mysqltest_u1@localhost;
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
--echo # -- End of Bug#33507.
|
--echo # -- End of Bug#33507.
|
||||||
--echo
|
--echo
|
||||||
|
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
|
--echo # -- Bug#35074: max_used_connections is not correct.
|
||||||
|
--echo
|
||||||
|
|
||||||
|
FLUSH STATUS;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
SHOW STATUS LIKE 'max_used_connections';
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # -- Starting Event Scheduler...
|
||||||
|
SET GLOBAL event_scheduler = ON;
|
||||||
|
|
||||||
|
--echo # -- Waiting for Event Scheduler to start...
|
||||||
|
let $wait_condition =
|
||||||
|
SELECT COUNT(*) = 1
|
||||||
|
FROM information_schema.processlist
|
||||||
|
WHERE user = 'event_scheduler';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
# NOTE: We should use a new connection here instead of reconnect in order to
|
||||||
|
# avoid races (we can not for sure when the connection being disconnected is
|
||||||
|
# actually disconnected on the server).
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # -- Opening a new connection to check max_used_connections...
|
||||||
|
--connect (con_1,localhost,root)
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # -- Check that max_used_connections hasn't changed.
|
||||||
|
SHOW STATUS LIKE 'max_used_connections';
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # -- Closing new connection...
|
||||||
|
--disconnect con_1
|
||||||
|
--connection default
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # -- Stopping Event Scheduler...
|
||||||
|
SET GLOBAL event_scheduler = OFF;
|
||||||
|
|
||||||
|
--echo # -- Waiting for Event Scheduler to stop...
|
||||||
|
let $wait_condition =
|
||||||
|
SELECT COUNT(*) = 0
|
||||||
|
FROM information_schema.processlist
|
||||||
|
WHERE user = 'event_scheduler';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo # -- End of Bug#35074.
|
||||||
|
--echo
|
||||||
|
|
||||||
--echo # ------------------------------------------------------------------
|
--echo # ------------------------------------------------------------------
|
||||||
--echo # -- End of 5.1 tests
|
--echo # -- End of 5.1 tests
|
||||||
--echo # ------------------------------------------------------------------
|
--echo # ------------------------------------------------------------------
|
||||||
|
@ -4776,6 +4776,9 @@ static void create_new_thread(THD *thd)
|
|||||||
|
|
||||||
++connection_count;
|
++connection_count;
|
||||||
|
|
||||||
|
if (connection_count > max_used_connections)
|
||||||
|
max_used_connections= connection_count;
|
||||||
|
|
||||||
pthread_mutex_unlock(&LOCK_connection_count);
|
pthread_mutex_unlock(&LOCK_connection_count);
|
||||||
|
|
||||||
/* Start a new thread to handle connection. */
|
/* Start a new thread to handle connection. */
|
||||||
@ -4791,9 +4794,6 @@ static void create_new_thread(THD *thd)
|
|||||||
|
|
||||||
thread_count++;
|
thread_count++;
|
||||||
|
|
||||||
if (thread_count - delayed_insert_threads > max_used_connections)
|
|
||||||
max_used_connections= thread_count - delayed_insert_threads;
|
|
||||||
|
|
||||||
thread_scheduler.add_connection(thd);
|
thread_scheduler.add_connection(thd);
|
||||||
|
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user