Memory-queue ids carry a per-instance boot token, so a restart without Redis no longer overwrites earlier run rows

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WgBfkm4rCmtd1T4vHWjEPx
This commit is contained in:
2026-10-14 23:33:25 +02:00
co-authored by Claude Opus 5.5
parent 9145b7d1c0
commit f4512aeebc
2 changed files with 17 additions and 1 deletions
+12
View File
@@ -25,6 +25,18 @@ def test_items_come_back_in_the_order_they_went_in():
assert all(item.entry_id for item in claimed)
def test_two_queues_never_hand_out_the_same_id():
"""A restart without Redis must not reuse the last boot's run ids."""
first, second = MemoryWorkQueue(), MemoryWorkQueue()
for queue in (first, second):
queue.add(WorkItem(kind="cascade", node="f.n", flow="f"))
ids = [queue.claim(1, 10)[0].entry_id for queue in (first, second)]
assert ids[0] != ids[1]
assert all(len(entry_id) <= 64 for entry_id in ids)
def test_claiming_an_empty_queue_waits_and_gives_up():
queue = MemoryWorkQueue()
started = time.monotonic()