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:
raf 2026-02-17 00:02:30 +03:00
commit 5b472a2f57
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
16 changed files with 173 additions and 23 deletions

View file

@ -282,6 +282,7 @@ async fn test_fair_share_scheduling() {
branch: None,
scheduling_shares: Some(200),
state: None,
keep_nr: None,
})
.await
.expect("create jobset hi");
@ -297,6 +298,7 @@ async fn test_fair_share_scheduling() {
branch: None,
scheduling_shares: Some(100),
state: None,
keep_nr: None,
})
.await
.expect("create jobset lo");
@ -487,6 +489,7 @@ async fn test_atomic_build_claiming() {
branch: None,
scheduling_shares: None,
state: None,
keep_nr: None,
})
.await
.expect("create jobset");
@ -579,6 +582,7 @@ async fn test_orphan_build_reset() {
branch: None,
scheduling_shares: None,
state: None,
keep_nr: None,
})
.await
.expect("create jobset");
@ -684,6 +688,7 @@ async fn test_get_cancelled_among() {
branch: None,
scheduling_shares: None,
state: None,
keep_nr: None,
})
.await
.expect("create jobset");