summaryrefslogtreecommitdiffstats
path: root/mysql-test/include/kill_binlog_dump_threads.inc
blob: 38e3e2a7c989c9001e25b2305ddc539a9d423a16 (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
55
56
57
58
59
60
61
62
# ==== Purpose ====
#
# Terminate all binlog dump threads on a master.
#
# This is sometimes useful, as normally such dump threads can hang
# around for some time before they notice that the slave has disconnected.
#
# Note that if there are active slave connections, they might try to
# reconnect as their dump threads are killed, which may not lead to the
# desired results.
#
#
# ==== Usage ====
#
# [--let $kill_timeout= NUMBER]
# --source include/stop_slavekill_binlog_dump_threads.inc
#
# Parameters:
#   $kill_timeout
#     Maximum number of seconds to wait for dump threads to disappear.


--let $include_filename= kill_binlog_dump_threads.inc
--source include/begin_include_file.inc

--disable_query_log

let $wait_counter= 300;
if ($kill_timeout)
{
  let $wait_counter= `SELECT $kill_timeout * 10`;
}

let $success= 0;
while ($wait_counter)
{
    dec $wait_counter;
    let $_tid= `SELECT id FROM information_schema.processlist WHERE command = 'Binlog Dump' LIMIT 1`;
    if ($_tid)
    {
        eval KILL QUERY $_tid;
    }
    if (!$_tid)
    {
        let $wait_counter= 0;
	let $success= 1;
    }
    if (!$success)
    {
        real_sleep 0.1;
    }
}
if (!$success)
{
    SHOW FULL PROCESSLIST;
    --die Timeout while waiting for binlog dump threads to disappear.
}

--enable_query_log

--let $include_filename= kill_binlog_dump_threads.inc
--source include/end_include_file.inc