Adds an `ActiveBuild` registry (DashMap of `<Uuid, CancellationToken>`) to `WorkerPool` and get `dispatch()` to create a per-build token to race `run_build` against it via Tokio's `select!`. The `cancel_checker_loop` then polls the DB every N seconds (currently 2) for builds cancelled while running, and triggers their tokens. Existing `kill_on_drop(true) on `nix build` processes handles subprocess cleanup when the future is dropped. Thank you past me for your insight. Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: Ic8af58e92972c7d5d104d9c717e9217d6a6a6964
30 lines
834 B
TOML
30 lines
834 B
TOML
[package]
|
|
name = "fc-queue-runner"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
authors.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
chrono.workspace = true
|
|
clap.workspace = true
|
|
config.workspace = true
|
|
dashmap.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
sqlx.workspace = true
|
|
thiserror.workspace = true
|
|
tokio.workspace = true
|
|
tokio-util.workspace = true
|
|
tracing.workspace = true
|
|
tracing-subscriber.workspace = true
|
|
urlencoding.workspace = true
|
|
uuid.workspace = true
|
|
|
|
# Our crates
|
|
fc-common.workspace = true
|
|
|
|
[dev-dependencies]
|
|
tempfile.workspace = true
|