A lock on the job — no double runs

The scenario sets a "busy" mark in Redis for the duration of a long job: a second run sees it, stops with a clear error, and leaves the data intact.

  • Only one run at a time
  • No duplicated data
  • The second run fails clearly, not silently
  • The lock expires — a hung job can't block everything