Repository navigation
v1.5.15 — Fix requeue loop after 24h+ sessions
Fix
Infinite requeue loop persisted after 24h+ — The v1.5.14 dedup window used the queue row's enqueue timestamp, not the ack time. After 24 hours, completed items fell outside the window and became invisible to dedup. Reconciliation (which fires on every hook) would then re-enqueue all those scenes, restarting the loop.
Root Cause
get_queued_scene_ids() window was anchored to enqueue time, which ages out. Additionally, detect_empty_metadata in reconciliation flagged scenes purely based on Plex's current metadata state with no check against sync_timestamps — so recently-synced scenes that Plex hadn't fully indexed yet appeared as gaps.
Fix
-
Persistent sync guard in
reconciliation/engine.py—_enqueue_gaps()now checkssync_timestampsbefore enqueuing. If a scene was already synced with current data (sync_timestamps[scene_id] >= scene.updated_at_epoch), it's skipped regardless of queue row age. This is the permanent fix. -
Extended dedup window in
sync_queue/operations.py—completed_windowincreased from 24h to 7 days as defense-in-depth.
Verification
- 1,266 tests pass including regression tests from v1.5.14