4 ms·
> Any code that can end up blocking forever should have a timeout and recover from that timeout happening. Any code that can end up blocking forever under norm
by marcan_42 5y ago
> Any code that can end up blocking forever should have a timeout and recover from that timeout happening.
Any code that can end up blocking forever under normal circumstances already has a timeout and recovers from that.
This wasn't a normal circumstance, this was a logic bug.
> The problem here was that something that is known to fail for all sorts of reasons (network IO) was happening without such a timeout.
No. Read the article. It was an infinite loop. Equivalent to while(1);. Not a network timeout. Not a network error. An infinite loop. A logic problem.
I am appalled at how many people replying in the comments here cannot grasp this basic fact. This isn't about some dumb telemetry design where telemetry requests block everything else. This was a logic bug in the network stack that wedged the entire thing eating 100% CPU. There's no miracle fix for infinite loop bugs.