From a6d54d5d9faddd310fab1fb49c455260a81c60fe Mon Sep 17 00:00:00 2001 From: Mario Trangoni Date: Tue, 13 Nov 2018 19:50:07 +0100 Subject: [PATCH 1/3] pkg/cmd/grafana-server/main.go: Fix error value not checked See, $ gometalinter --vendor --deadline 10m --disable-all --enable=errcheck ./... pkg/cmd/grafana-server/main.go:56:23:warning: error return value not checked (http.ListenAndServe(fmt.Sprintf("localhost:%d", *profilePort), nil)) (errcheck) --- pkg/cmd/grafana-server/main.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/cmd/grafana-server/main.go b/pkg/cmd/grafana-server/main.go index c7c1ff3aff7..e534485e94d 100644 --- a/pkg/cmd/grafana-server/main.go +++ b/pkg/cmd/grafana-server/main.go @@ -53,7 +53,10 @@ func main() { if *profile { runtime.SetBlockProfileRate(1) go func() { - http.ListenAndServe(fmt.Sprintf("localhost:%d", *profilePort), nil) + err := http.ListenAndServe(fmt.Sprintf("localhost:%d", *profilePort), nil) + if err != nil { + panic(err) + } }() f, err := os.Create("trace.out") From dae7c11a5ff4ad6bfc6b0a7df6d35ac9aed4571f Mon Sep 17 00:00:00 2001 From: Mario Trangoni Date: Tue, 13 Nov 2018 20:01:05 +0100 Subject: [PATCH 2/3] pkg/cmd/grafana-server/server.go: check serviceGraph.Provide() errors See, $ gometalinter --vendor --deadline 10m --disable-all --enable=errcheck ./... pkg/cmd/grafana-server/server.go:77:22:warning: error return value not checked (serviceGraph.Provide(&inject.Object{Value: bus.GetBus()})) (errcheck) pkg/cmd/grafana-server/server.go:78:22:warning: error return value not checked (serviceGraph.Provide(&inject.Object{Value: g.cfg})) (errcheck) pkg/cmd/grafana-server/server.go:79:22:warning: error return value not checked (serviceGraph.Provide(&inject.Object{Value: routing.NewRouteRegister(middleware.RequestMetrics, middleware.RequestTracing)})) (errcheck) pkg/cmd/grafana-server/server.go:80:22:warning: error return value not checked (serviceGraph.Provide(&inject.Object{Value: cache.New(5*time.Minute, 10*time.Minute)})) (errcheck) pkg/cmd/grafana-server/server.go:87:23:warning: error return value not checked (serviceGraph.Provide(&inject.Object{Value: service.Instance})) (errcheck) pkg/cmd/grafana-server/server.go:90:22:warning: error return value not checked (serviceGraph.Provide(&inject.Object{Value: g})) (errcheck) --- pkg/cmd/grafana-server/server.go | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/pkg/cmd/grafana-server/server.go b/pkg/cmd/grafana-server/server.go index 2c67a06a843..6a0c87bb0e8 100644 --- a/pkg/cmd/grafana-server/server.go +++ b/pkg/cmd/grafana-server/server.go @@ -67,6 +67,7 @@ type GrafanaServerImpl struct { } func (g *GrafanaServerImpl) Run() error { + var err error g.loadConfiguration() g.writePIDFile() @@ -74,20 +75,38 @@ func (g *GrafanaServerImpl) Run() error { social.NewOAuthService() serviceGraph := inject.Graph{} - serviceGraph.Provide(&inject.Object{Value: bus.GetBus()}) - serviceGraph.Provide(&inject.Object{Value: g.cfg}) - serviceGraph.Provide(&inject.Object{Value: routing.NewRouteRegister(middleware.RequestMetrics, middleware.RequestTracing)}) - serviceGraph.Provide(&inject.Object{Value: cache.New(5*time.Minute, 10*time.Minute)}) + err = serviceGraph.Provide(&inject.Object{Value: bus.GetBus()}) + if err != nil { + return fmt.Errorf("Failed to provide object to the graph: %v", err) + } + err = serviceGraph.Provide(&inject.Object{Value: g.cfg}) + if err != nil { + return fmt.Errorf("Failed to provide object to the graph: %v", err) + } + err = serviceGraph.Provide(&inject.Object{Value: routing.NewRouteRegister(middleware.RequestMetrics, middleware.RequestTracing)}) + if err != nil { + return fmt.Errorf("Failed to provide object to the graph: %v", err) + } + err = serviceGraph.Provide(&inject.Object{Value: cache.New(5*time.Minute, 10*time.Minute)}) + if err != nil { + return fmt.Errorf("Failed to provide object to the graph: %v", err) + } // self registered services services := registry.GetServices() // Add all services to dependency graph for _, service := range services { - serviceGraph.Provide(&inject.Object{Value: service.Instance}) + err = serviceGraph.Provide(&inject.Object{Value: service.Instance}) + if err != nil { + return fmt.Errorf("Failed to provide object to the graph: %v", err) + } } - serviceGraph.Provide(&inject.Object{Value: g}) + err = serviceGraph.Provide(&inject.Object{Value: g}) + if err != nil { + return fmt.Errorf("Failed to provide object to the graph: %v", err) + } // Inject dependencies to services if err := serviceGraph.Populate(); err != nil { From 774ad3ff3938fae62f5a413cf37507f9281bc011 Mon Sep 17 00:00:00 2001 From: Mario Trangoni Date: Tue, 13 Nov 2018 21:20:44 +0100 Subject: [PATCH 3/3] pkg/cmd/grafana-server/server.go: Check sendSystemdNotification return value. See, $ gometalinter --vendor --deadline 10m --disable-all --enable=errcheck ./... server.go:165:25:warning: error return value not checked (sendSystemdNotification("READY=1")) (errcheck) --- pkg/cmd/grafana-server/server.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/cmd/grafana-server/server.go b/pkg/cmd/grafana-server/server.go index 6a0c87bb0e8..9e83f1036bb 100644 --- a/pkg/cmd/grafana-server/server.go +++ b/pkg/cmd/grafana-server/server.go @@ -162,7 +162,11 @@ func (g *GrafanaServerImpl) Run() error { }) } - sendSystemdNotification("READY=1") + err = sendSystemdNotification("READY=1") + if err != nil { + return fmt.Errorf("Could not send systemd notification: %v", err) + } + return g.childRoutines.Wait() }