Description
The MCP HTTP server in pkg/cli/mcp_server_http.go (~line 98) has ReadHeaderTimeout set but lacks WriteTimeout and IdleTimeout. Without IdleTimeout, idle keep-alive connections are never reclaimed, causing goroutine/file-descriptor accumulation over time.
Suggested Changes
Add IdleTimeout (and evaluate WriteTimeout — may be intentionally absent for streaming responses):
server := &http.Server{
Addr: addr,
Handler: handler,
ReadHeaderTimeout: MCPServerHTTPTimeout,
IdleTimeout: 90 * time.Second,
// WriteTimeout omitted intentionally for streaming SSE responses
}
Files Affected
pkg/cli/mcp_server_http.go (~line 95-105)
Success Criteria
Source
Extracted from [repository-quality] Goroutine Lifecycle Hygiene #47586
Priority
Medium
🔍 Task mining by Discussion Task Miner - Code Quality Improvement Agent · sonnet46 · 67.5 AIC · ⌖ 5.28 AIC · ⊞ 7.1K · ◷
Description
The MCP HTTP server in
pkg/cli/mcp_server_http.go(~line 98) hasReadHeaderTimeoutset but lacksWriteTimeoutandIdleTimeout. WithoutIdleTimeout, idle keep-alive connections are never reclaimed, causing goroutine/file-descriptor accumulation over time.Suggested Changes
Add
IdleTimeout(and evaluateWriteTimeout— may be intentionally absent for streaming responses):Files Affected
pkg/cli/mcp_server_http.go(~line 95-105)Success Criteria
IdleTimeoutset to reclaim idle keep-alive connectionsWriteTimeoutis or isn't set for streamingSource
Extracted from [repository-quality] Goroutine Lifecycle Hygiene #47586
Priority
Medium