From dd35b49a3f9ff7af07d818c3a5aa01f096da46ab Mon Sep 17 00:00:00 2001 From: Daan Meijer Date: Thu, 15 Oct 2026 19:13:21 +0200 Subject: [PATCH] Nightly pause (23:45) and resume (07:45); a deploy while paused leaves the workers stopped Co-Authored-By: Claude Opus 5.5 --- deploy/deploy.sh | 10 ++++++++-- deploy/usenet-rebuild-pause.sh | 12 ++++++++++++ deploy/usenet-rebuild-resume.sh | 11 +++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100755 deploy/usenet-rebuild-pause.sh create mode 100755 deploy/usenet-rebuild-resume.sh diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 587a799..982da19 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -45,8 +45,14 @@ docker compose run --rm --no-deps migrate # stream keeps the node API from exiting. echo "== recreating app services" docker compose stop edge -docker compose up -d --no-deps node-api web coordinator prober merger judge spotter spot-inspector -docker compose up -d --no-deps edge +if [ -e "$CACHE/paused" ]; then + # Paused for the night (~/bin/usenet-rebuild-pause.sh): the workers stay stopped, the resume starts the new build. + echo "== paused: coordinator, prober, merger, judge, spotter, spot-inspector and edge left stopped" + docker compose up -d --no-deps node-api web +else + docker compose up -d --no-deps node-api web coordinator prober merger judge spotter spot-inspector + docker compose up -d --no-deps edge +fi echo "$SHA $(date -Is)" >> "$ROOT/deployed.log" # The images this replaced (321 MB each; the root filesystem is the NVMe, with a 10 GB floor). docker image prune -f --filter label=com.docker.compose.project=usenet-rebuild >/dev/null diff --git a/deploy/usenet-rebuild-pause.sh b/deploy/usenet-rebuild-pause.sh new file mode 100755 index 0000000..e6617f0 --- /dev/null +++ b/deploy/usenet-rebuild-pause.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# Installed as ~/bin/usenet-rebuild-pause.sh (by hand). Nightly (homelab crontab, 23:45): voyager 2's processing paused for the night; usenet-rebuild-resume.sh (07:45) +# starts it again. Postgres, web and node-api stay up. Takes the deploy lock, so it never runs during a CI deploy, and +# leaves .cache/paused, so a deploy in the night doesn't start the workers again. +cd /mnt/bulk/usenet-rebuild || exit 1 +exec 9>.cache/deploy.lock +flock 9 +touch .cache/paused +date "+%F %T pausing" +docker compose stop edge +docker compose stop coordinator prober merger judge spotter spot-inspector +docker compose ps --format "{{.Service}} {{.Status}}" diff --git a/deploy/usenet-rebuild-resume.sh b/deploy/usenet-rebuild-resume.sh new file mode 100755 index 0000000..32c8e14 --- /dev/null +++ b/deploy/usenet-rebuild-resume.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# Installed as ~/bin/usenet-rebuild-resume.sh (by hand). Nightly (homelab crontab, 07:45): voyager 2's processing back after usenet-rebuild-pause.sh (23:45). Takes the +# deploy lock, like the pause. +cd /mnt/bulk/usenet-rebuild || exit 1 +exec 9>.cache/deploy.lock +flock 9 +rm -f .cache/paused +date "+%F %T resuming" +docker compose up -d --no-deps coordinator prober merger judge spotter spot-inspector +docker compose up -d --no-deps edge +docker compose ps --format "{{.Service}} {{.Status}}"