From 20cdd9ca3ed0c2d62779c4fc61d278a489b4460a Mon Sep 17 00:00:00 2001 From: Sven Klemm Date: Tue, 1 Nov 2022 12:22:59 +0100 Subject: [PATCH] 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. --- tsl/test/expected/bgw_db_scheduler_fixed.out | 35 ++++++++++++++------ tsl/test/sql/bgw_db_scheduler_fixed.sql | 16 +++++++-- 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/tsl/test/expected/bgw_db_scheduler_fixed.out b/tsl/test/expected/bgw_db_scheduler_fixed.out index f02f2df11..e91aaaa83 100644 --- a/tsl/test/expected/bgw_db_scheduler_fixed.out +++ b/tsl/test/expected/bgw_db_scheduler_fixed.out @@ -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) diff --git a/tsl/test/sql/bgw_db_scheduler_fixed.sql b/tsl/test/sql/bgw_db_scheduler_fixed.sql index de7fd54d2..b1f2215ef 100644 --- a/tsl/test/sql/bgw_db_scheduler_fixed.sql +++ b/tsl/test/sql/bgw_db_scheduler_fixed.sql @@ -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; + +