A worker dies in the middle of payments
Hypothesis held
- What was broken
- 100 payments whose first provider call fails; while both order-worker replicas work through them, one is killed (SIGKILL)
- Hypothesis
- No payment is lost and none is charged twice: RabbitMQ redelivers the unacknowledged jobs to the other replica, and the provider gets the task id as its idempotency key.
What was measured
- Payments finished: 100 of 100 succeeded
- Charges at the provider: 100 charge ids for 100 payments: none charged twice
- Redelivered to the other worker: 1 job(s) the killed worker held unacknowledged
- All done after the kill: 1.1 s