Skip to content

v1.5.15 — Fix requeue loop after 24h+ sessions

Choose a tag to compare

@trek-e trek-e released this 27 Feb 04:45
· 114 commits to main since this release

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

  1. Persistent sync guard in reconciliation/engine.py — _enqueue_gaps() now checks sync_timestamps before 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.

  2. Extended dedup window in sync_queue/operations.py — completed_window increased from 24h to 7 days as defense-in-depth.

Verification

  • 1,266 tests pass including regression tests from v1.5.14