From a4e920f4eb10dae187a1e50c9460569878e5509e Mon Sep 17 00:00:00 2001 From: Dani Louca Date: Mon, 4 Mar 2019 11:45:53 -0500 Subject: [PATCH] Use custom gRPC dialer to override default proxy dialer Signed-off-by: Dani Louca (cherry picked from commit 85aeb0bbb035f0b7699f3858813c46efdcd343b7) Signed-off-by: Sebastiaan van Stijn --- manager/state/raft/util.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/manager/state/raft/util.go b/manager/state/raft/util.go index da44dca6a5..3cf548ea76 100644 --- a/manager/state/raft/util.go +++ b/manager/state/raft/util.go @@ -1,6 +1,7 @@ package raft import ( + "net" "time" "golang.org/x/net/context" @@ -15,11 +16,15 @@ import ( // dial returns a grpc client connection func dial(addr string, protocol string, creds credentials.TransportCredentials, timeout time.Duration) (*grpc.ClientConn, error) { + // gRPC dialer connects to proxy first. Provide a custom dialer here avoid that. grpcOptions := []grpc.DialOption{ grpc.WithBackoffMaxDelay(2 * time.Second), grpc.WithTransportCredentials(creds), grpc.WithUnaryInterceptor(grpc_prometheus.UnaryClientInterceptor), grpc.WithStreamInterceptor(grpc_prometheus.StreamClientInterceptor), + grpc.WithDialer(func(addr string, timeout time.Duration) (net.Conn, error) { + return net.DialTimeout("tcp", addr, timeout) + }), } if timeout != 0 {