mirror of https://github.com/citusdata/citus.git
Fix flakiness in multi_maintenance_multiple_databases.sql
parent
37198369cd
commit
5b2c297ca4
|
@ -256,12 +256,31 @@ WHERE state = 'idle'
|
|||
|
||||
\c - - - :master_port
|
||||
-- Let maintenance do it's work...
|
||||
SELECT pg_sleep_for('10 seconds'::interval);
|
||||
pg_sleep_for
|
||||
---------------------------------------------------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
DO
|
||||
$$
|
||||
BEGIN
|
||||
FOR i IN 0 .. 300
|
||||
LOOP
|
||||
IF i = 300 THEN RAISE 'Waited too long'; END IF;
|
||||
PERFORM pg_stat_clear_snapshot();
|
||||
PERFORM * FROM pg_stat_activity WHERE application_name = 'Citus Maintenance Daemon';
|
||||
IF (SELECT count(*) = 0 AS pg_dist_transaction_after_recovery_coordinator_test
|
||||
FROM pg_database,
|
||||
dblink(format('dbname=%s host=localhost port=%s user=postgres', datname,
|
||||
(SELECT setting::int FROM pg_settings WHERE name = 'port')),
|
||||
$statement$
|
||||
SELECT groupid, gid
|
||||
FROM pg_dist_transaction
|
||||
WHERE gid LIKE 'citus_0_1234_4_0_%'
|
||||
OR gid LIKE 'citus_0_should_be_forgotten_%'
|
||||
$statement$) AS t(groupid integer, gid text)
|
||||
WHERE datname LIKE 'db%') THEN
|
||||
EXIT;
|
||||
END IF;
|
||||
PERFORM pg_sleep_for('1 SECOND'::interval);
|
||||
END LOOP;
|
||||
END
|
||||
$$;
|
||||
-- Verify maintenance result
|
||||
SELECT count(*) = 0 AS too_many_clients_test
|
||||
FROM regexp_split_to_table(pg_read_file('../log/postmaster.log'), E'\n') AS t(log_line)
|
||||
|
@ -271,22 +290,6 @@ WHERE log_line LIKE '%sorry, too many clients already%';
|
|||
t
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) = 0 AS pg_dist_transaction_after_recovery_coordinator_test
|
||||
FROM pg_database,
|
||||
dblink(format('dbname=%s host=localhost port=%s user=postgres', datname,
|
||||
(SELECT setting::int FROM pg_settings WHERE name = 'port')),
|
||||
$statement$
|
||||
SELECT groupid, gid
|
||||
FROM pg_dist_transaction
|
||||
WHERE gid LIKE 'citus_0_1234_4_0_%'
|
||||
OR gid LIKE 'citus_0_should_be_forgotten_%'
|
||||
$statement$) AS t(groupid integer, gid text)
|
||||
WHERE datname LIKE 'db%';
|
||||
pg_dist_transaction_after_recovery_coordinator_test
|
||||
---------------------------------------------------------------------
|
||||
t
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) = 0 AS cached_connections_after_recovery_coordinator_test
|
||||
FROM pg_stat_activity
|
||||
WHERE state = 'idle'
|
||||
|
|
|
@ -222,7 +222,31 @@ WHERE state = 'idle'
|
|||
|
||||
-- Let maintenance do it's work...
|
||||
|
||||
SELECT pg_sleep_for('10 seconds'::interval);
|
||||
DO
|
||||
$$
|
||||
BEGIN
|
||||
FOR i IN 0 .. 300
|
||||
LOOP
|
||||
IF i = 300 THEN RAISE 'Waited too long'; END IF;
|
||||
PERFORM pg_stat_clear_snapshot();
|
||||
PERFORM * FROM pg_stat_activity WHERE application_name = 'Citus Maintenance Daemon';
|
||||
IF (SELECT count(*) = 0 AS pg_dist_transaction_after_recovery_coordinator_test
|
||||
FROM pg_database,
|
||||
dblink(format('dbname=%s host=localhost port=%s user=postgres', datname,
|
||||
(SELECT setting::int FROM pg_settings WHERE name = 'port')),
|
||||
$statement$
|
||||
SELECT groupid, gid
|
||||
FROM pg_dist_transaction
|
||||
WHERE gid LIKE 'citus_0_1234_4_0_%'
|
||||
OR gid LIKE 'citus_0_should_be_forgotten_%'
|
||||
$statement$) AS t(groupid integer, gid text)
|
||||
WHERE datname LIKE 'db%') THEN
|
||||
EXIT;
|
||||
END IF;
|
||||
PERFORM pg_sleep_for('1 SECOND'::interval);
|
||||
END LOOP;
|
||||
END
|
||||
$$;
|
||||
|
||||
-- Verify maintenance result
|
||||
|
||||
|
@ -230,18 +254,6 @@ SELECT count(*) = 0 AS too_many_clients_test
|
|||
FROM regexp_split_to_table(pg_read_file('../log/postmaster.log'), E'\n') AS t(log_line)
|
||||
WHERE log_line LIKE '%sorry, too many clients already%';
|
||||
|
||||
SELECT count(*) = 0 AS pg_dist_transaction_after_recovery_coordinator_test
|
||||
FROM pg_database,
|
||||
dblink(format('dbname=%s host=localhost port=%s user=postgres', datname,
|
||||
(SELECT setting::int FROM pg_settings WHERE name = 'port')),
|
||||
$statement$
|
||||
SELECT groupid, gid
|
||||
FROM pg_dist_transaction
|
||||
WHERE gid LIKE 'citus_0_1234_4_0_%'
|
||||
OR gid LIKE 'citus_0_should_be_forgotten_%'
|
||||
$statement$) AS t(groupid integer, gid text)
|
||||
WHERE datname LIKE 'db%';
|
||||
|
||||
SELECT count(*) = 0 AS cached_connections_after_recovery_coordinator_test
|
||||
FROM pg_stat_activity
|
||||
WHERE state = 'idle'
|
||||
|
|
Loading…
Reference in New Issue