Fix bgw_db_scheduler_fixed flakyness

Depending on date boundaries the number of chunks produced for the
cagg hypertable was not constant resulting on flaky tests on certain
days.
This commit is contained in:
Sven Klemm 2022-11-01 12:22:59 +01:00 committed by Sven Klemm
parent 3d30f07bf4
commit 20cdd9ca3e
2 changed files with 38 additions and 13 deletions

View File

@ -1619,6 +1619,12 @@ SELECT time_bucket('1 month', time), avg(a)
FROM test_table_scheduler
GROUP BY time_bucket('1 month', time)
WITH NO DATA;
SELECT set_chunk_time_interval('_timescaledb_internal._materialized_hypertable_2', interval '36500 days');
set_chunk_time_interval
-------------------------
(1 row)
select show_chunks('test_table_scheduler');
show_chunks
----------------------------------------
@ -1694,11 +1700,11 @@ select hypertable_schema, hypertable_name, chunk_schema, chunk_name, is_compress
_timescaledb_internal | _materialized_hypertable_2 | _timescaledb_internal | _hyper_2_10_chunk | f
(5 rows)
select avg_a from cagg_scheduler;
select avg_a from cagg_scheduler ORDER BY 1;
avg_a
--------------------
4.0000000000000000
3.0000000000000000
4.0000000000000000
(2 rows)
-- test the API for add_job too
@ -1747,14 +1753,21 @@ select * from _timescaledb_config.bgw_job order by id;
1031 | Reorder Policy [1031] | @ 360 hours | @ 0 | -1 | @ 5 mins | _timescaledb_internal | policy_reorder | super_user | t | t | Fri Dec 31 16:00:00.015 1999 PST | 1 | {"index_name": "test_table_scheduler_time_idx", "hypertable_id": 1} | _timescaledb_internal | policy_reorder_check | Europe/Berlin
(6 rows)
select job_id, last_start, last_finish, next_start, last_successful_finish from _timescaledb_internal.bgw_job_stat order by job_id;
job_id | last_start | last_finish | next_start | last_successful_finish
--------+----------------------------------+----------------------------------+----------------------------------+----------------------------------
1026 | Fri Dec 31 16:00:00 1999 PST | Fri Dec 31 16:00:00 1999 PST | Sat Jan 01 16:00:00 2000 PST | Fri Dec 31 16:00:00 1999 PST
1027 | Fri Dec 31 16:00:00 1999 PST | Fri Dec 31 16:00:00 1999 PST | Sat Jan 15 16:00:00 2000 PST | Fri Dec 31 16:00:00 1999 PST
1028 | Fri Dec 31 16:00:00.005 1999 PST | Fri Dec 31 16:00:00.005 1999 PST | Fri Jan 21 16:00:00.005 2000 PST | Fri Dec 31 16:00:00.005 1999 PST
1029 | Fri Dec 31 16:00:00.025 1999 PST | Fri Dec 31 16:00:00.025 1999 PST | Mon Jul 31 16:00:00.01 2000 PDT | Fri Dec 31 16:00:00.025 1999 PST
1030 | Fri Dec 31 16:00:00.025 1999 PST | Fri Dec 31 16:00:00.025 1999 PST | Mon Jul 31 16:00:00.01 2000 PDT | Fri Dec 31 16:00:00.025 1999 PST
1031 | Fri Dec 31 16:00:00.025 1999 PST | Fri Dec 31 16:00:00.025 1999 PST | Sat Jan 15 16:00:00.015 2000 PST | Fri Dec 31 16:00:00.025 1999 PST
SELECT
job_id,
date_trunc('second',last_start) AS last_start,
date_trunc('second',last_finish) AS last_finish,
date_trunc('second',next_start) AS next_start,
last_successful_finish
FROM _timescaledb_internal.bgw_job_stat
ORDER BY job_id;
job_id | last_start | last_finish | next_start | last_successful_finish
--------+------------------------------+------------------------------+------------------------------+----------------------------------
1026 | Fri Dec 31 16:00:00 1999 PST | Fri Dec 31 16:00:00 1999 PST | Sat Jan 01 16:00:00 2000 PST | Fri Dec 31 16:00:00 1999 PST
1027 | Fri Dec 31 16:00:00 1999 PST | Fri Dec 31 16:00:00 1999 PST | Sat Jan 15 16:00:00 2000 PST | Fri Dec 31 16:00:00 1999 PST
1028 | Fri Dec 31 16:00:00 1999 PST | Fri Dec 31 16:00:00 1999 PST | Fri Jan 21 16:00:00 2000 PST | Fri Dec 31 16:00:00.005 1999 PST
1029 | Fri Dec 31 16:00:00 1999 PST | Fri Dec 31 16:00:00 1999 PST | Mon Jul 31 16:00:00 2000 PDT | Fri Dec 31 16:00:00.025 1999 PST
1030 | Fri Dec 31 16:00:00 1999 PST | Fri Dec 31 16:00:00 1999 PST | Mon Jul 31 16:00:00 2000 PDT | Fri Dec 31 16:00:00.025 1999 PST
1031 | Fri Dec 31 16:00:00 1999 PST | Fri Dec 31 16:00:00 1999 PST | Sat Jan 15 16:00:00 2000 PST | Fri Dec 31 16:00:00.025 1999 PST
(6 rows)

View File

@ -703,6 +703,8 @@ FROM test_table_scheduler
GROUP BY time_bucket('1 month', time)
WITH NO DATA;
SELECT set_chunk_time_interval('_timescaledb_internal._materialized_hypertable_2', interval '36500 days');
select show_chunks('test_table_scheduler');
alter table test_table_scheduler set (timescaledb.compress, timescaledb.compress_orderby = 'time DESC');
@ -717,7 +719,7 @@ SELECT * from _timescaledb_internal.bgw_job_stat;
SELECT show_chunks('test_table_scheduler');
select hypertable_schema, hypertable_name, chunk_schema, chunk_name, is_compressed from timescaledb_information.chunks ;
select avg_a from cagg_scheduler;
select avg_a from cagg_scheduler ORDER BY 1;
-- test the API for add_job too
create or replace procedure job_test_fixed(jobid int, config jsonb) language plpgsql as $$
begin
@ -737,4 +739,14 @@ initial_start => :'init'::timestamptz + interval '15 ms', timezone => 'Europe/Be
SELECT ts_bgw_db_scheduler_test_run_and_wait_for_scheduler_finish(25);
select * from _timescaledb_config.bgw_job order by id;
select job_id, last_start, last_finish, next_start, last_successful_finish from _timescaledb_internal.bgw_job_stat order by job_id;
SELECT
job_id,
date_trunc('second',last_start) AS last_start,
date_trunc('second',last_finish) AS last_finish,
date_trunc('second',next_start) AS next_start,
last_successful_finish
FROM _timescaledb_internal.bgw_job_stat
ORDER BY job_id;