Is it appropriate for a server to return 503 ("Service Unavailable")
when the requested operation resulted in a database deadlock?
Here is my reasoning:
- Initially I tried avoiding database deadlocks, but I ran across https://stackoverflow.com/a/112256/14731
- Next, I tried repeating the request on the server-side, but I ran across Java Servlets: How to repeat an HTTP request?. Technically speaking I can buffer the request entity but scalability will suffer and clients are more likely to see
503 Service Unavailable
anyway.
Seeing as:
- It's easier to ask clients to repeat the operation.
- They need to be able to handle
503 Service Unavailable
anyway. - Database deadlocks are rather rare.
I'm leaning towards this solution. What do you think?
UPDATE: I think returning 503 ("Service Unavailable")
is still acceptable if you wish it, but I no longer think it is technically required. See https://stackoverflow.com/a/17960047/14731.