Join GitHub today
While looking at #25117, I was again struck by how uninformative "hang on all new requests" is as a diagnostic output.
We'd thrown around the idea of checking thread statuses and guessing when things might be stuck, but I'm still nervous that we'd trip on too many legitimately slow operations.
Instead, I propose this middleware.
If your application appears to be experiencing a deadlock, you can insert this, then go to
Naturally, we're able to provide lots of information about the actual interlock state (some of which is derived from duplicated logic for now, but that could be refactored later), but we can't offer much about whatever "other" lock is involved. However, the above example demonstrates that the backtraces may often be sufficient.