fc-common: add GC pinning and machine health infrastructure
Migration 017 adds `builds.keep`, `jobsets.keep_nr`, and health tracking columns to `remote_builders`. Repo layer implements `set_keep`, `list_pinned_ids`, `record_failure` with exponential backoff, `record_success`, and `find_for_system` filtering of disabled builders. GC root cleanup now skips pinned builds. Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: Ibba121de3dc42f71204e3a8f5776aa8b6a6a6964
This commit is contained in:
parent
25699e5e97
commit
5b472a2f57
16 changed files with 173 additions and 23 deletions
|
|
@ -0,0 +1,32 @@
|
|||
-- GC pinning (#11)
|
||||
ALTER TABLE builds ADD COLUMN IF NOT EXISTS keep BOOLEAN NOT NULL DEFAULT false;
|
||||
ALTER TABLE jobsets ADD COLUMN IF NOT EXISTS keep_nr INTEGER NOT NULL DEFAULT 3;
|
||||
|
||||
-- Recreate active_jobsets view to include keep_nr
|
||||
DROP VIEW IF EXISTS active_jobsets;
|
||||
CREATE VIEW active_jobsets AS
|
||||
SELECT
|
||||
j.id,
|
||||
j.project_id,
|
||||
j.name,
|
||||
j.nix_expression,
|
||||
j.enabled,
|
||||
j.flake_mode,
|
||||
j.check_interval,
|
||||
j.branch,
|
||||
j.scheduling_shares,
|
||||
j.created_at,
|
||||
j.updated_at,
|
||||
j.state,
|
||||
j.last_checked_at,
|
||||
j.keep_nr,
|
||||
p.name as project_name,
|
||||
p.repository_url
|
||||
FROM jobsets j
|
||||
JOIN projects p ON j.project_id = p.id
|
||||
WHERE j.state IN ('enabled', 'one_shot', 'one_at_a_time');
|
||||
|
||||
-- Machine health tracking (#5)
|
||||
ALTER TABLE remote_builders ADD COLUMN IF NOT EXISTS consecutive_failures INTEGER NOT NULL DEFAULT 0;
|
||||
ALTER TABLE remote_builders ADD COLUMN IF NOT EXISTS disabled_until TIMESTAMP WITH TIME ZONE;
|
||||
ALTER TABLE remote_builders ADD COLUMN IF NOT EXISTS last_failure TIMESTAMP WITH TIME ZONE;
|
||||
Loading…
Add table
Add a link
Reference in a new issue