From 2cd9173bfbfe267946ecef3ffa0da9d97dd75171 Mon Sep 17 00:00:00 2001 From: Christian Schwarz Date: Mon, 9 Sep 2019 22:15:18 +0200 Subject: [PATCH] transport/local: hard fail, more aggressive connect timeout --- transport/local/connect_local.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/transport/local/connect_local.go b/transport/local/connect_local.go index 76102ea..fc1af56 100644 --- a/transport/local/connect_local.go +++ b/transport/local/connect_local.go @@ -3,6 +3,7 @@ package local import ( "context" "fmt" + "time" "github.com/zrepl/zrepl/config" "github.com/zrepl/zrepl/transport" @@ -25,5 +26,11 @@ func LocalConnecterFromConfig(in *config.LocalConnect) (*LocalConnecter, error) func (c *LocalConnecter) Connect(dialCtx context.Context) (transport.Wire, error) { l := GetLocalListener(c.listenerName) - return l.Connect(dialCtx, c.clientIdentity) + dialCtx, cancel := context.WithTimeout(dialCtx, 1*time.Second) // fail fast, config error by user is very likely + defer cancel() + w, err := l.Connect(dialCtx, c.clientIdentity) + if err == context.DeadlineExceeded { + return nil, fmt.Errorf("local listener %q not reachable", c.listenerName) + } + return w, err }