From 045e939d7b21d9378938ecbf88943457f260903c Mon Sep 17 00:00:00 2001 From: Seth Hoenig Date: Tue, 27 Jul 2021 10:25:44 -0500 Subject: [PATCH] consul/connect: avoid warn messages on connect proxy errors When creating a TCP proxy bridge for Connect tasks, we are at the mercy of either end for managing the connection state. For long lived gRPC connections the proxy could reasonably expect to stay open until the context was cancelled. For the HTTP connections used by connect native tasks, we experience connection disconnects. The proxy gets recreated as needed on follow up requests, however we also emit a WARN log when the connection is broken. This PR lowers the WARN to a TRACE, because these disconnects are to be expected. Ideally we would be able to proxy at the HTTP layer, however Consul or the connect native task could be configured to expect mTLS, preventing Nomad from MiTM the requests. We also can't mange the proxy lifecycle more intelligently, because we have no control over the HTTP client or server and how they wish to manage connection state. What we have now works, it's just noisy. Fixes #10933 --- client/allocrunner/consul_grpc_sock_hook.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/allocrunner/consul_grpc_sock_hook.go b/client/allocrunner/consul_grpc_sock_hook.go index 91014fedc0e9..f20242077b9f 100644 --- a/client/allocrunner/consul_grpc_sock_hook.go +++ b/client/allocrunner/consul_grpc_sock_hook.go @@ -313,7 +313,8 @@ func proxyConn(ctx context.Context, logger hclog.Logger, destAddr string, conn n defer cancel() n, err := io.Copy(dest, conn) if ctx.Err() == nil && err != nil { - logger.Warn("error proxying to Consul", "error", err, "dest", destAddr, + // expect disconnects when proxying http + logger.Trace("error proxying to Consul", "error", err, "dest", destAddr, "src_local", conn.LocalAddr(), "src_remote", conn.RemoteAddr(), "bytes", n, )