mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
54 lines
1.2 KiB
PHP
54 lines
1.2 KiB
PHP
|
# include/wait_for_binlog_checkpoint.inc
|
||
|
#
|
||
|
# SUMMARY
|
||
|
#
|
||
|
# Wait until binlog checkpoint has been logged for current binlog file.
|
||
|
# This is useful to avoid races with output difference for binlog
|
||
|
# checkpoints, as these are logged asynchronously from the binlog
|
||
|
# background thread.
|
||
|
#
|
||
|
# USAGE:
|
||
|
#
|
||
|
# --source include/wait_for_binlog_checkpoint.inc
|
||
|
|
||
|
let $_wait_count= 300;
|
||
|
|
||
|
let $_found= 0;
|
||
|
|
||
|
while ($_wait_count)
|
||
|
{
|
||
|
dec $_wait_count;
|
||
|
let $_cur_binlog= query_get_value(SHOW MASTER STATUS, File, 1);
|
||
|
let $_more= 1;
|
||
|
let $_row= 1;
|
||
|
while ($_more)
|
||
|
{
|
||
|
let $_event= query_get_value(SHOW BINLOG EVENTS IN "$_cur_binlog", Event_type, $_row);
|
||
|
if ($_event == "No such row")
|
||
|
{
|
||
|
let $_more= 0;
|
||
|
}
|
||
|
if ($_event == "Binlog_checkpoint")
|
||
|
{
|
||
|
let $_info= query_get_value(SHOW BINLOG EVENTS IN "$_cur_binlog", Info, $_row);
|
||
|
if (`SELECT INSTR("$_info", "$_cur_binlog") != 0`)
|
||
|
{
|
||
|
let $_more= 0;
|
||
|
let $_wait_count= 0;
|
||
|
let $_found= 1;
|
||
|
}
|
||
|
}
|
||
|
inc $_row;
|
||
|
}
|
||
|
if ($_wait_count)
|
||
|
{
|
||
|
real_sleep 0.1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!$_found)
|
||
|
{
|
||
|
eval SHOW BINLOG EVENTS IN "$_cur_binlog";
|
||
|
--die ERROR: failed while waiting for binlog checkpoint $_cur_binlog
|
||
|
}
|