Managing Long Running Tasks hard
When deploying new worker code, how should the old worker process shutdown?
- A Kill -9 immediately.
- B Stop accepting new tasks. Finish processing the current task. Then exit. (Graceful Shutdown/Drain).
- C Reboot the machine.
- D Crash.
Answer: B. Stop accepting new tasks. Finish processing the current task. Then exit. (Graceful Shutdown/Drain).
Abrupt termination leaves tasks in 'limbo' until visibility timeout, delaying processing.
One system design question a day, with spaced repetition so the ones you miss come back.
Get the appRelated questions
- What is the primary purpose of a Dead Letter Queue (DLQ)?
- The architectural pattern where one service creates tasks and another processes them is called:
- In a Priority Queue system (High vs Low), what is 'Starvation' and how do you fix it?
- How do you atomically update your local database AND publish a message to a queue without losing sync if the process crashes in between?
- What does 'Fire and Forget' mean?
- Why might you 'Throttle' (limit the speed of) your background workers?