From a697ed6643e41fcf6e396186d9ea218de7602fc6 Mon Sep 17 00:00:00 2001 From: Dylan De Faoite Date: Thu, 5 Feb 2026 20:09:56 +0000 Subject: [PATCH] fix: handle clean shutdown upon SIGTERM --- rewind/daemon.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/rewind/daemon.py b/rewind/daemon.py index 247997c..0e6ee0d 100755 --- a/rewind/daemon.py +++ b/rewind/daemon.py @@ -7,6 +7,7 @@ import subprocess import logging import json import shutil +import signal from threading import Lock from watchdog.observers import Observer @@ -29,6 +30,14 @@ OBS_MAX_RETRIES = 10 seen_files = set() seen_lock = Lock() +def shutdown(signum, frame): + global running + logger.info(f"Received signal {signum}, shutting down cleanly") + running = False + +signal.signal(signal.SIGINT, shutdown) +signal.signal(signal.SIGTERM, shutdown) + def open_obs(): kill_command = subprocess.run(['pkill', 'obs']) if kill_command.returncode not in [0, 1]: @@ -142,6 +151,10 @@ def main() -> None: cleanup_markers(config["record"]["max_record_time"]) time.sleep(INTERVAL) finally: + if observer: + observer.stop() + observer.join() + stop_recording(con) con.disconnect() logger.info("Daemon stopped")