From: Tom Clegg Date: Fri, 27 Sep 2019 20:40:19 +0000 (-0400) Subject: 15599: Fix misleading error message when address already in use. X-Git-Tag: 2.0.0~185^2~5 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/25a7acb26323d159a60e43b037a19e255b6abdbd 15599: Fix misleading error message when address already in use. Also warn about unexpected errors encountered while looking for the current host's entry in InternalURLs. Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- diff --git a/lib/service/cmd.go b/lib/service/cmd.go index ddff5f47a4..0391c5a043 100644 --- a/lib/service/cmd.go +++ b/lib/service/cmd.go @@ -103,7 +103,7 @@ func (c *command) RunCommand(prog string, args []string, stdin io.Reader, stdout }) ctx := ctxlog.Context(c.ctx, logger) - listenURL, err := getListenAddr(cluster.Services, c.svcName) + listenURL, err := getListenAddr(cluster.Services, c.svcName, log) if err != nil { return 1 } @@ -159,7 +159,7 @@ func (c *command) RunCommand(prog string, args []string, stdin io.Reader, stdout const rfc3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00" -func getListenAddr(svcs arvados.Services, prog arvados.ServiceName) (arvados.URL, error) { +func getListenAddr(svcs arvados.Services, prog arvados.ServiceName, log logrus.FieldLogger) (arvados.URL, error) { svc, ok := svcs.Map()[prog] if !ok { return arvados.URL{}, fmt.Errorf("unknown service name %q", prog) @@ -172,6 +172,12 @@ func getListenAddr(svcs arvados.Services, prog arvados.ServiceName) (arvados.URL if err == nil { listener.Close() return url, nil + } else if strings.Contains(err.Error(), "cannot assign requested address") { + continue + } else if strings.Contains(err.Error(), "address already in use") { + return url, err + } else { + log.Warn(err) } } return arvados.URL{}, fmt.Errorf("configuration does not enable the %s service on this host", prog)