gendesign/data/sql/55_schema_scrape_resume.sql
2026-04-27 21:50:44 +03:00

17 lines
840 B
SQL

-- Resume support for kn-API sweeps.
-- When a worker dies (redeploy/SIGKILL/OOM), the run row stays 'running'.
-- Worker startup hook finds rows with stale heartbeat (>5 min) and re-enqueues
-- a resume task that picks up from progress_obj_index using objects_snapshot.
-- Idempotent.
ALTER TABLE kn_scrape_runs
ADD COLUMN IF NOT EXISTS heartbeat_at TIMESTAMPTZ,
ADD COLUMN IF NOT EXISTS progress_obj_index INT,
ADD COLUMN IF NOT EXISTS total_obj_count INT,
ADD COLUMN IF NOT EXISTS objects_snapshot JSONB,
ADD COLUMN IF NOT EXISTS params JSONB,
ADD COLUMN IF NOT EXISTS resumed_from_run_id BIGINT REFERENCES kn_scrape_runs(run_id);
CREATE INDEX IF NOT EXISTS idx_kn_scrape_runs_running_heartbeat
ON kn_scrape_runs (heartbeat_at)
WHERE status IN ('running', 'resuming');