mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-15 01:53:41 +08:00
We shouldnt reuse job ids to make it easy to recognize the job log entries for a job. We also need to keep the old job around to not break loading dumps from older versions.
115 lines
2.9 KiB
PL/PgSQL
115 lines
2.9 KiB
PL/PgSQL
-- This file and its contents are licensed under the Apache License 2.0.
|
|
-- Please see the included NOTICE for copyright information and
|
|
-- LICENSE-APACHE for a copy of the license.
|
|
|
|
-- A retention policy is set up for the table _timescaledb_internal.job_errors (Error Log Retention Policy [2])
|
|
-- By default, it will run once a month and and drop rows older than a month.
|
|
CREATE OR REPLACE FUNCTION _timescaledb_functions.policy_job_stat_history_retention(job_id integer, config JSONB) RETURNS integer
|
|
LANGUAGE PLPGSQL AS
|
|
$BODY$
|
|
DECLARE
|
|
drop_after INTERVAL;
|
|
numrows INTEGER;
|
|
BEGIN
|
|
drop_after := config->>'drop_after';
|
|
|
|
DELETE
|
|
FROM _timescaledb_internal.bgw_job_stat_history
|
|
WHERE execution_finish < (now() - drop_after);
|
|
|
|
GET DIAGNOSTICS numrows = ROW_COUNT;
|
|
|
|
RETURN numrows;
|
|
END;
|
|
$BODY$ SET search_path TO pg_catalog, pg_temp;
|
|
|
|
CREATE OR REPLACE FUNCTION _timescaledb_functions.policy_job_stat_history_retention_check(config JSONB) RETURNS VOID
|
|
LANGUAGE PLPGSQL AS
|
|
$BODY$
|
|
BEGIN
|
|
IF config IS NULL THEN
|
|
RAISE EXCEPTION 'config cannot be NULL, and must contain drop_after';
|
|
END IF;
|
|
|
|
IF config->>'drop_after' IS NULL THEN
|
|
RAISE EXCEPTION 'drop_after interval not provided';
|
|
END IF ;
|
|
END;
|
|
$BODY$ SET search_path TO pg_catalog, pg_temp;
|
|
|
|
-- this is the previous job that was created for the same purpose
|
|
-- which has scheduled set to false. We need to keep it around to
|
|
-- not break loading dumps from older versions.
|
|
INSERT INTO _timescaledb_config.bgw_job (
|
|
id,
|
|
application_name,
|
|
schedule_interval,
|
|
max_runtime,
|
|
max_retries,
|
|
retry_period,
|
|
proc_schema,
|
|
proc_name,
|
|
owner,
|
|
scheduled,
|
|
config,
|
|
check_schema,
|
|
check_name,
|
|
fixed_schedule,
|
|
initial_start
|
|
)
|
|
VALUES
|
|
(
|
|
2,
|
|
'Error Log Retention Policy [2]',
|
|
INTERVAL '1 month',
|
|
INTERVAL '1 hour',
|
|
-1,
|
|
INTERVAL '1h',
|
|
'_timescaledb_functions',
|
|
'policy_job_error_retention',
|
|
pg_catalog.quote_ident(current_role)::regrole,
|
|
false,
|
|
'{"drop_after":"1 month"}',
|
|
'_timescaledb_functions',
|
|
'policy_job_error_retention_check',
|
|
false,
|
|
'2000-01-01 00:00:00+00'::timestamptz
|
|
) ON CONFLICT (id) DO NOTHING;
|
|
|
|
|
|
INSERT INTO _timescaledb_config.bgw_job (
|
|
id,
|
|
application_name,
|
|
schedule_interval,
|
|
max_runtime,
|
|
max_retries,
|
|
retry_period,
|
|
proc_schema,
|
|
proc_name,
|
|
owner,
|
|
scheduled,
|
|
config,
|
|
check_schema,
|
|
check_name,
|
|
fixed_schedule,
|
|
initial_start
|
|
)
|
|
VALUES
|
|
(
|
|
3,
|
|
'Job History Log Retention Policy [3]',
|
|
INTERVAL '1 month',
|
|
INTERVAL '1 hour',
|
|
-1,
|
|
INTERVAL '1h',
|
|
'_timescaledb_functions',
|
|
'policy_job_stat_history_retention',
|
|
pg_catalog.quote_ident(current_role)::regrole,
|
|
true,
|
|
'{"drop_after":"1 month"}',
|
|
'_timescaledb_functions',
|
|
'policy_job_stat_history_retention_check',
|
|
true,
|
|
'2000-01-01 00:00:00+00'::timestamptz
|
|
) ON CONFLICT (id) DO NOTHING;
|