Guard against stopping the stack while a podcast is running
Stopping the stack kills an in-flight podcast job, but its status stays "running" in the database forever: it never finishes, it blocks prune_podcast_data.py (which deliberately refuses to run while a job is active), and it cannot even be retried — /retry only accepts episodes in state "failed". I walked into this myself: I ran `docker compose down` for the non-root switch without checking for running jobs, and killed a podcast that had already produced 37 clips. update_stack.sh now refuses to start when a podcast job is running, and says why. Verified against a genuinely running job: it aborts before touching the stack. BEDIENUNGSANLEITUNG documents how to recover an existing zombie. The status does not live on the episode but on the linked `command` record (the episode's own job_status is null), so the fix is to set that record to 'failed' via SurrealDB, after which the normal retry works. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
9e6d790830
commit
5b389fae58
2 changed files with 54 additions and 0 deletions
|
|
@ -46,6 +46,24 @@ if [ "$DRY_RUN" = 1 ]; then
|
|||
exit 0
|
||||
fi
|
||||
|
||||
# Ein laufender Podcast ueberlebt das Stoppen nicht: der Job ist weg, sein Status bleibt
|
||||
# aber auf "running" stehen. Er wird nie fertig, blockiert prune_podcast_data.py und laesst
|
||||
# sich nicht per /retry wiederholen (das will "failed"). Also vorher fragen, nicht nachher
|
||||
# aufraeumen.
|
||||
running_jobs="$(curl -sf -m 10 http://127.0.0.1:5055/api/podcasts/episodes 2>/dev/null |
|
||||
python3 -c "
|
||||
import json,sys
|
||||
try: eps = json.load(sys.stdin)
|
||||
except Exception: sys.exit(0)
|
||||
print('; '.join(e['name'] for e in eps if e.get('job_status') in ('running','pending','submitted')))" 2>/dev/null)"
|
||||
if [ -n "${running_jobs// /}" ]; then
|
||||
echo
|
||||
echo "ABBRUCH: Es laeuft gerade ein Podcast-Job: $running_jobs"
|
||||
echo " Das Stoppen wuerde ihn abschiessen und als Karteileiche zuruecklassen."
|
||||
echo " Bitte warten, bis er fertig ist, und danach erneut starten."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ts="$(date +%Y%m%d-%H%M%S)"
|
||||
backup="$BACKUP_DIR/$ts"
|
||||
mkdir -p "$backup"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue