summaryrefslogtreecommitdiff
path: root/mysql-test/main/mdev-21101.test
blob: 627e86462a18770ae6424f81932fb1e0e23d0f1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
--source include/not_embedded.inc
# Test that wait_timeout does not cause connection to be closed, when connection is delayed due to
# threadpool internal problems, e.g misconfiguration - too few threads and queueing.
# So if client did not cause wait_timeout, do not report it either.
# See MDEV-21101 for details.

# Intentionally misconfigure threadpool to have at most 1 or 2 threads (
# depends on the implementation). Use minimal wait_timeout, do some slow queries from
# different connections simultaneously, to force queueing occurs.
# Verify connections are intact, even if queueing time exceeds wait_timeout

SELECT
  @@global.wait_timeout, @@global.thread_pool_max_threads, @@global.thread_pool_size,
  @@global.thread_pool_oversubscribe,  @@global.thread_pool_stall_limit
INTO
  @_wait_timeout,@_thread_pool_max_threads,@_thread_pool_size,
  @_thread_pool_oversubscribe,@_thread_pool_stall_limit;

SET @@global.wait_timeout=1,
    @@global.thread_pool_max_threads=2,
    @@global.thread_pool_size=1,
    @@global.thread_pool_oversubscribe=1,
    @@global.thread_pool_stall_limit=10;
 
--connect (c1, localhost, root,,)
--connect (c2, localhost, root,,)
--connect (c3, localhost, root,,)
--connection c1
--send select sleep(1.1)
--connection c2
--send select sleep(1.1)
--connection c3
--send select sleep(1.1)
--connection default
--send select sleep(1.1)
--connection c1
--reap
--connection c2
--reap
--connection c3
--reap
--connection default
--reap
--disconnect c1
--disconnect c2
--disconnect c3
--connection default

SET @@global.wait_timeout=@_wait_timeout,
    @@global.thread_pool_max_threads=@_thread_pool_max_threads,
    @@global.thread_pool_size=@_thread_pool_size,
    @@global.thread_pool_oversubscribe=@_thread_pool_oversubscribe,
    @@global.thread_pool_stall_limit=@_thread_pool_stall_limit;