File: wait_for_purge.inc

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 (56 lines) | stat: -rw-r--r-- 1,453 bytes parent folder | download | duplicates (2)
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
# include/wait_for_purge.inc
#
# SUMMARY
#
#    Repeatedly attempt to purge binlogs up to a specific point, until
#    SHOW BINARY LOGS shows it has succeeded.
#    This can be useful to avoid races where slaves are stopped but the
#    corresponding binlog dump thread on the master has not yet terminated.
#    Async binlog checkpoints can also delay purge.
#
#    Note that it may be necessary to inject at least one event in the binlog
#    after stopping slaves, or master may not detect stop of slave for a long
#    time (or forever), depending on details of test case, if replication
#    heartbeat is enabled, etc.
#
# USAGE:
#
#    --let $purge_binlogs_to=master-bin.000003
#    --source include/wait_for_purge.inc
#
# SIDE EFFECTS:
#
#    Disables --query_log and warnings while running, enables them afterwards.

--echo include/wait_for_purge.inc "$purge_binlogs_to"

let $_wait_count= 300;
let $_done= 0;

--disable_query_log
--disable_warnings

while ($_wait_count)
{
  dec $_wait_count;
  eval PURGE BINARY LOGS TO "$purge_binlogs_to";
  let $_cur_binlog= query_get_value(SHOW BINARY LOGS, Log_name, 1);
  if (`SELECT "$_cur_binlog" = "$purge_binlogs_to"`)
  {
    let $_done= 1;
    let $_wait_count= 0;
  }
  if ($_wait_count)
  {
    real_sleep 0.1;
  }
}

if (!$_done)
{
  SHOW FULL PROCESSLIST;
  eval SHOW BINARY LOGS;
  --die ERROR: failed while waiting for binlog purge to $purge_binlogs_to
}
--enable_warnings
--enable_query_log