From 1807eb75ddad7595cb8789e32d72fab456b84aca Mon Sep 17 00:00:00 2001 From: Reid 'arrdem' McKenzie Date: Sat, 3 Jun 2023 19:46:26 -0600 Subject: [PATCH] Bugfix: Harden against lost jobs --- projects/tentacles/src/python/tentacles/workers.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/projects/tentacles/src/python/tentacles/workers.py b/projects/tentacles/src/python/tentacles/workers.py index 29e6019..af0dcc5 100644 --- a/projects/tentacles/src/python/tentacles/workers.py +++ b/projects/tentacles/src/python/tentacles/workers.py @@ -12,6 +12,7 @@ import logging from pathlib import Path from typing import Callable from urllib import parse as urlparse +from pprint import pformat from cherrypy.process.plugins import Monitor from fastmail import FastMailSMTP @@ -217,10 +218,7 @@ def pull_jobs(app: App, db: Db) -> None: except HTTPError: printer_state = {"disconnected": True, "error": True} - if printer_state.get("printing"): - pass - - elif job_state.get("progress", {}).get("completion", 0.0) == 100.0: + if job_state.get("progress", {}).get("completion", 0.0) == 100.0: log.info(f"Job {job.id} has succeeded") db.finish_job(jid=job.id, state="success") @@ -232,10 +230,14 @@ def pull_jobs(app: App, db: Db) -> None: log.info(f"Job {job.id} has been acknowledged as cancelled") db.finish_job(jid=job.id, state="cancelled") + if printer_state.get("printing"): + pass + else: log.warn( - f"Job {job.id} is in a weird state {job_state.get('progress')!r} {printer_state!r}" + f"Job {job.id} is in a weird state; assuming error\n{pformat(job_state.get('progress'))}\n{pformat(printer_state)}" ) + db.finish_job(jid=job.id, state="failed") except TimeoutError: pass