From 94758cff4e6483d7c6a8f8ce264c00b5847769d4 Mon Sep 17 00:00:00 2001 From: Dylan De Faoite Date: Sun, 15 Feb 2026 20:45:36 +0000 Subject: [PATCH] fix(state): make add_file_to_state idempotent --- rewind/daemon.py | 10 +--------- rewind/state.py | 5 +++++ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/rewind/daemon.py b/rewind/daemon.py index 0e6ee0d..1352a0e 100755 --- a/rewind/daemon.py +++ b/rewind/daemon.py @@ -27,9 +27,6 @@ INTERVAL = 10 SENTINEL_FILE = os.path.expanduser("~/.config/obs-studio/.sentinel") 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") @@ -119,12 +116,7 @@ class Handler(FileSystemEventHandler): return if not event.src_path.endswith(".ts"): return - - with seen_lock: - if event.src_path in seen_files: - return - seen_files.add(event.src_path) - + add_file_to_state(event.src_path) logger.info(f"Added new file to state: {event.src_path}") diff --git a/rewind/state.py b/rewind/state.py index e2e4345..eea84ed 100644 --- a/rewind/state.py +++ b/rewind/state.py @@ -33,6 +33,11 @@ def add_file_to_state(file_path: str) -> None: state = load_state() files = state.get("files", []) + # Idempotency guard + existing_paths = {f["path"] for f in files} + if file_path in existing_paths: + return + files.append({ "path": file_path, "timestamp": datetime.datetime.now().timestamp(),