cc-os/plugins/os-adr/eval-b/fixture/project/docs/adr/0004-cap-outbound-http-time...

936 B

id date status supersedes superseded-by affected-paths affected-components
0004 2026-03-12 Accepted
lib/relay/http_client.rb
http

0004 — Cap outbound HTTP timeouts at five seconds

Context

A single hung receiver held a delivery open for two minutes with the stdlib default timeouts, blocking everything queued behind it.

Decision

HttpClient sets open_timeout and read_timeout to five seconds. A receiver that cannot accept a small JSON POST within five seconds is treated as failed and handled by the retry policy.

Consequences

A hung receiver costs at most ten seconds per attempt. Genuinely slow-but-healthy receivers will see more retries; none have surfaced in practice.

Alternatives rejected

Per-endpoint configurable timeouts rejected: no current need, and it invites unbounded values creeping back in. Thirty-second timeouts rejected: still long enough to stall the queue noticeably.