Перейти к содержимому

Network Timeouts Are Not Failures

Fleshed Out Thoughts

0:00 / 0:00

Network Timeouts Are Not Failures

3 просмотра · 6 дней назад
Fleshed Out Thoughts
3 подписчика
3 просмотра · 6 дней назад
A timeout is not a failure. It is a local observation that an expected result did not arrive within a waiting boundary. The remote operation may have succeeded. The response may have been lost. The server may still be processing. The caller does not know, and that is not the same as knowing the operation failed. This is a layered breakdown of the Timing contract from the Networking Reliability document — what it actually establishes, what it does not, and why conflating a local observation with a remote outcome is one of the most expensive mistakes in distributed systems. The canonical failure trace is simple. A client sends a request. The server processes it and commits the effect. The response is lost on the way back. The client's waiting boundary is reached. The client observes a timeout. The client now believes the operation failed. It did not. The operation succeeded. The client just cannot establish that from the evidence available to it. This is not a networking failure. It is a structural property of communication across a boundary where knowledge is distributed and observation is partial. The timeout is evidence. It is not the outcome. This is a synthesis review: source material generated with LLMs, reviewed and annotated with Notebook LLM, then edited for technical accuracy. The process is documented, not hidden. https://docs.google.com/document/d/1w... KEY TAKEAWAYS A timeout is a local observation, not a remote outcome Timeout ≠ remote failure ≠ timing contract violation A local waiting boundary constrains when a participant stops waiting; a temporal obligation constrains when a communication event must occur The same observable timeout may be evidence of a breach under one contract and correct behavior under another The four-way distinction: actual outcome ≠ communicated outcome ≠ observed outcome ≠ known outcome Communication partitions knowledge: different participants may possess different, simultaneously valid observations of the same operation Ambiguity is a participant knowledge state, not an actual system state Ambiguity is not a failure unless the contract promised distinguishability The Timing contract defines temporal bounds and waiting conditions; it does not establish remote outcome Outcome Semantics governs what the participant may legitimately conclude from available evidence A timeout may motivate retry, but retry safety belongs to Retry & Idempotency Retry amplification is a feedback loop, not a contract violation The caller does not need to know what happened remotely; it needs to know what it may conclude from available evidence Networking establishes the uncertainty. Retry & Idempotency determines how to act under it Unknown is not failed WHO THIS IS FOR Platform engineers, SREs, backend developers, systems engineers, distributed systems engineers, and anyone who has ever written `if (timeout) { retry(); }` :) without a contract model attached. RELATED Network timeout, timing contract, waiting boundary, temporal obligation, deadline, expiration, outcome ambiguity, four-way outcome distinction, actual outcome, communicated outcome, observed outcome, known outcome, retry amplification, feedback loop, outcome semantics, retry and idempotency boundary, ambiguity tolerance, canonical ambiguity test, distributed systems, platform engineering, SRE, observability, contract evidence, failure mechanics, failure amplification. CORRECTIONS If something here is wrong or outdated, say so in the comments. Corrections get pinned and folded into the written version. #Timeouts #systemsengineering #llmreview