File: rpl_start_stop_slave.test

package info (click to toggle)
mariadb 1%3A11.8.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 772,520 kB
  • sloc: ansic: 2,414,714; cpp: 1,791,394; asm: 381,336; perl: 62,905; sh: 49,647; pascal: 40,897; java: 39,363; python: 20,791; yacc: 20,432; sql: 17,907; xml: 12,344; ruby: 8,544; cs: 6,542; makefile: 6,145; ada: 1,879; lex: 1,193; javascript: 996; objc: 80; tcl: 73; awk: 46; php: 22
file content (75 lines) | stat: -rw-r--r-- 2,095 bytes parent folder | download | duplicates (4)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
#
#BUG#11752315 : STOP SLAVE UNABLE TO COMPLETE WHEN SLAVE THREAD IS TRYING 
#               TO RECONNECT TO 
#
# ==== Purpose ====
#
#Tests that the slave does not go to a sleep for a long duration after the 
#master is killed and we do a START_SLAVE and STOP_SLAVE.
#
# ==== Method ====
#
#This is a new functionality of having an interruptable sleep of the slave.
#We find the thread id for the slave thread. On finding the thread ID of the 
#slave thread we kill the slave thread. A successful kill in less than 60 sec 
#should serve the purpose of checking the functionality.
#

--source include/have_log_bin.inc
--source include/master-slave.inc

connection slave;
--let $i= 100
while ($i > 0) {
  dec $i;
  --let $connection_id=`SELECT id FROM information_schema.processlist where state LIKE 'Waiting for master to send event'`
  if ($connection_id) {
    let $i= 0;
  }
  if ($i > 0) {
    --sleep 0.1
  }
}

if(!$connection_id)
{
  # Something went wrong (timing)
  # Show process list so that we can debug. In this case we will abort with
  # wrong result
  -- echo "Could not find connect id. Dumping process list for debugging"
  SELECT * FROM information_schema.processlist;
  exit;
}

set @time_before_kill := (select CURRENT_TIMESTAMP);

--echo [Time before the query]
--echo [Connection ID of the slave I/O thread found]

--replace_regex /kill [0-9]*/kill <connection_id>/
--eval kill $connection_id
--source include/wait_for_slave_io_to_stop.inc

set @time_after_kill := (select CURRENT_TIMESTAMP);

--echo [Time after the query]

if(`select TIMESTAMPDIFF(SECOND,@time_after_kill, @time_before_kill) > 60`)
{
--echo # assert : The difference between the timestamps 'time_after_kill' and 'time_before_kill' should be less than 60sec.
--die
}
--echo [Killing of the slave IO thread was successful]

START SLAVE IO_THREAD;
--source include/wait_for_slave_io_to_start.inc

# Ensure that the slave io thread started properly
connection master;
create table t1 (a int primary key);
sync_slave_with_master;
connection master;
drop table t1;

# End of test
--source include/rpl_end.inc