apps/api/internal/ws/hub.go manages WebSocket connections for real-time build log streaming, but conn.Close() errors are unchecked (line 37) and there's no visible cleanup when a deployment finishes or a client disconnects unexpectedly.
Under load (many concurrent deployments), leaked connections accumulate until the process runs out of file descriptors.
apps/api/internal/ws/hub.go manages WebSocket connections for real-time build log streaming, but conn.Close() errors are unchecked (line 37) and there's no visible cleanup when a deployment finishes or a client disconnects unexpectedly.
Under load (many concurrent deployments), leaked connections accumulate until the process runs out of file descriptors.