US02-03 — Execute Jobs with Leases, Locks, and Recovery #10

Closed
opened 2026-07-13 13:10:40 +02:00 by domverse · 3 comments
Owner

Source specification: delivery_backlog/stories/US02-03-worker-recovery.md

US02-03 — Execute Jobs with Leases, Locks, and Recovery

Epic: E02

As an operator, I want workers to claim, cancel, and recover jobs safely so crashes or
duplicate workers cannot corrupt state.

Acceptance criteria

  • Workers use leases, heartbeats, fencing tokens, bounded queues, and typed lanes.
  • Cancellation is cooperative and leaves resumable or terminal item states.
  • Lock ordering prevents conflicting analysis, EXIF, rename, upload, and archive work.
  • A recovered job rejects late commits from its former worker.

Automated tests

  • Process tests kill workers, expire leases, recover jobs, and attempt stale commits.
  • Randomized concurrency tests assert no deadlocks, duplicate completion, or lost events.

Dependencies

  • US02-02
Source specification: [delivery_backlog/stories/US02-03-worker-recovery.md](https://git.domverse-berlin.eu/domverse/photoanalyzer/src/branch/main/delivery_backlog/stories/US02-03-worker-recovery.md) # US02-03 — Execute Jobs with Leases, Locks, and Recovery Epic: [E02](https://git.domverse-berlin.eu/domverse/photoanalyzer/src/branch/main/delivery_backlog/E02-unified-workflow-shell.md) As an operator, I want workers to claim, cancel, and recover jobs safely so crashes or duplicate workers cannot corrupt state. ## Acceptance criteria - Workers use leases, heartbeats, fencing tokens, bounded queues, and typed lanes. - Cancellation is cooperative and leaves resumable or terminal item states. - Lock ordering prevents conflicting analysis, EXIF, rename, upload, and archive work. - A recovered job rejects late commits from its former worker. ## Automated tests - Process tests kill workers, expire leases, recover jobs, and attempt stale commits. - Randomized concurrency tests assert no deadlocks, duplicate completion, or lost events. ## Dependencies - US02-02
domverse added this to the E02 — Unified Workflow Shell milestone 2026-07-13 13:10:40 +02:00
domverse added the area/backendtype/featurepriority/normal labels 2026-07-13 13:10:40 +02:00
domverse added a new dependency 2026-07-13 13:11:17 +02:00
domverse added a new dependency 2026-07-13 13:11:18 +02:00
domverse added a new dependency 2026-07-13 13:11:20 +02:00
domverse added this to the Photo Analyzer Delivery project 2026-07-13 13:19:44 +02:00
domverse added the status/backlog label 2026-07-13 13:52:46 +02:00
domverse added status/in-progress and removed status/backlog labels 2026-07-15 23:03:22 +02:00
domverse self-assigned this 2026-07-15 23:03:22 +02:00
Author
Owner

Claimed for implementation on branch us/US02-03-execute-jobs-with-leases-locks-and-recovery.

Claimed for implementation on branch `us/US02-03-execute-jobs-with-leases-locks-and-recovery`.
domverse added status/review and removed status/in-progress labels 2026-07-15 23:13:08 +02:00
Author
Owner

Submitted for review: #56

Tests passed:

  • work_item/scripts/python -m unittest discover -s work_item/tests -v
  • work_item/scripts/python -m pytest tests -q
  • work_item/scripts/python -m pytest tests/unit tests/integration tests/e2e -q
Submitted for review: https://git.domverse-berlin.eu/domverse/photoanalyzer/pulls/56 Tests passed: - `work_item/scripts/python -m unittest discover -s work_item/tests -v` - `work_item/scripts/python -m pytest tests -q` - `work_item/scripts/python -m pytest tests/unit tests/integration tests/e2e -q`
domverse added status/done and removed status/review labels 2026-07-15 23:13:28 +02:00
Author
Owner

Completed and merged via PR #56.

Completed and merged via PR #56.
domverse moved this to Done in Photo Analyzer Delivery on 2026-08-16 11:58:16 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: domverse/photoanalyzer#10