Critical fix for intermittent HTTP endpoint hangs identified by Codex analysis. ## Root Cause SSH collection via getTemperatureViaSSH() had no timeout, causing HTTP handlers to block indefinitely when sensors command hung. This held node-level mutexes and rate limit slots, creating cascading failures where subsequent requests queued indefinitely. ## Solution - Thread request context through to SSH execution - Add exec.CommandContext with 15s timeout (vs 30s HTTP client timeout) - Create execCommandWithLimitsContext() to wrap SSH commands - Ensures handlers always release locks and respond within deadline ## Impact - HTTP temps endpoint now responds in ~70ms consistently - Temperature data successfully collected and displayed in Pulse - Eliminates 'context deadline exceeded' errors - Prevents node gate deadlocks from slow/stuck SSH sessions Related to Codex session 019a7e99-00fc-7903-afa3-01100baf47c6 |
||
|---|---|---|
| .. | ||
| client.go | ||
| http_client.go | ||