57 lines
1.2 KiB
PHP
57 lines
1.2 KiB
PHP
#
|
|
# Wait for the undo tablespace name $inactive_undo_space to become empty
|
|
#
|
|
--disable_query_log
|
|
--disable_result_log
|
|
|
|
# Each inner loop is about 1 second. Set the number of seconds to wait.
|
|
let $wait_seconds = 30;
|
|
if ($wait_timeout)
|
|
{
|
|
let $wait_seconds = $wait_timeout;
|
|
}
|
|
|
|
let $first_loop = 1;
|
|
let $wait_timeout = 30;
|
|
let $set_inactive = ALTER UNDO TABLESPACE $inactive_undo_space SET INACTIVE;
|
|
let $wait_condition = SELECT count(*) = 1 FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
|
|
WHERE NAME = '$inactive_undo_space' AND STATE = 'empty';
|
|
|
|
# Keep track of how many times the wait condition is tested
|
|
let $repetitions = 0;
|
|
while ($wait_seconds)
|
|
{
|
|
let $repeat = 10;
|
|
|
|
if (!$first_loop)
|
|
{
|
|
eval $set_inactive;
|
|
}
|
|
let $first_loop = 0;
|
|
|
|
while ($repeat)
|
|
{
|
|
let $success_wait = `$wait_condition`;
|
|
inc $repetitions;
|
|
if ($success_wait)
|
|
{
|
|
let $wait_seconds = 1;
|
|
let $repeat = 1;
|
|
}
|
|
if (!$success_wait)
|
|
{
|
|
real_sleep 0.1;
|
|
}
|
|
dec $repeat;
|
|
}
|
|
dec $wait_seconds;
|
|
}
|
|
|
|
if (!$success_wait)
|
|
{
|
|
--echo # Timeout waiting for $inactive_undo_space to become empty after $repetitions tries
|
|
}
|
|
|
|
--enable_result_log
|
|
--enable_query_log
|