From 80e5b8318ccd10fbebdb7df299a2483e09e920d4 Mon Sep 17 00:00:00 2001 From: Arve Knudsen Date: Mon, 18 Nov 2019 09:49:08 +0100 Subject: [PATCH] Fail when server is unable to bind port (#20409) * Server: Return error when unable to bind port * Server: Exit if a service fails * Build: Remove graceful kill from Bra config (cherry picked from commit 82f4fc27831ea63cb4e276b721513224eef64bb0) --- .bra.toml | 2 -- pkg/api/http_server.go | 4 ++-- pkg/cmd/grafana-server/server.go | 13 ++++++++----- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.bra.toml b/.bra.toml index a9ffaa4a227..b455c55e20b 100644 --- a/.bra.toml +++ b/.bra.toml @@ -17,5 +17,3 @@ cmds = [ ["go", "run", "-mod=vendor", "build.go", "-dev", "build-server"], ["./bin/grafana-server", "-packaging=dev", "cfg:app_mode=development"] ] -interrupt_timout = 5 -graceful_kill = true diff --git a/pkg/api/http_server.go b/pkg/api/http_server.go index dd3cd771bbb..ad83739c945 100644 --- a/pkg/api/http_server.go +++ b/pkg/api/http_server.go @@ -29,6 +29,7 @@ import ( "github.com/grafana/grafana/pkg/services/quota" "github.com/grafana/grafana/pkg/services/rendering" "github.com/grafana/grafana/pkg/setting" + "github.com/grafana/grafana/pkg/util/errutil" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" macaron "gopkg.in/macaron.v1" @@ -93,8 +94,7 @@ func (hs *HTTPServer) Run(ctx context.Context) error { listenAddr := fmt.Sprintf("%s:%s", setting.HttpAddr, setting.HttpPort) listener, err := net.Listen("tcp", listenAddr) if err != nil { - hs.log.Debug("server was shutdown gracefully") - return nil + return errutil.Wrapf(err, "failed to open listener on address %s", listenAddr) } hs.log.Info("HTTP Server Listen", "address", listener.Addr().String(), "protocol", setting.Protocol, "subUrl", setting.AppSubUrl, "socket", setting.SocketPath) diff --git a/pkg/cmd/grafana-server/server.go b/pkg/cmd/grafana-server/server.go index 053997304c7..0dace4ebab9 100644 --- a/pkg/cmd/grafana-server/server.go +++ b/pkg/cmd/grafana-server/server.go @@ -103,7 +103,7 @@ func (s *Server) Run() (err error) { s.log.Info("Initializing " + service.Name) if err := service.Instance.Init(); err != nil { - return fmt.Errorf("Service init failed: %v", err) + return errutil.Wrapf(err, "Service init failed") } } @@ -126,18 +126,21 @@ func (s *Server) Run() (err error) { return nil } - if err := service.Run(s.context); err != nil { + err := service.Run(s.context) + // Mark that we are in shutdown mode + // So no more services are started + s.shutdownInProgress = true + if err != nil { if err != context.Canceled { // Server has crashed. s.log.Error("Stopped "+descriptor.Name, "reason", err) } else { s.log.Info("Stopped "+descriptor.Name, "reason", err) } + + return err } - // Mark that we are in shutdown mode - // So more services are not started - s.shutdownInProgress = true return nil }) }