From 96bade5a53f3a69484b5062dd7b86af7580c8c4f Mon Sep 17 00:00:00 2001 From: Peter Stuifzand Date: Sat, 23 Mar 2019 20:48:47 +0100 Subject: [PATCH] Improve error handling in main --- cmd/eksterd/main.go | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/cmd/eksterd/main.go b/cmd/eksterd/main.go index 122f505..b310c3e 100644 --- a/cmd/eksterd/main.go +++ b/cmd/eksterd/main.go @@ -24,6 +24,7 @@ import ( "time" "github.com/gomodule/redigo/redis" + "github.com/pkg/errors" "p83.nl/go/ekster/pkg/auth" "p83.nl/go/ekster/pkg/server" @@ -97,16 +98,16 @@ type App struct { } // Run runs the app -func (app *App) Run() { +func (app *App) Run() error { app.backend.run() app.hubBackend.run() log.Printf("Listening on port %d\n", app.options.Port) - log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", app.options.Port), nil)) + return http.ListenAndServe(fmt.Sprintf(":%d", app.options.Port), nil) } // NewApp initializes the App -func NewApp(options AppOptions) *App { +func NewApp(options AppOptions) (*App, error) { app := &App{ options: options, } @@ -137,12 +138,12 @@ func NewApp(options AppOptions) *App { if !options.Headless { handler, err := newMainHandler(app.backend, options.BaseURL, options.TemplateDir, options.pool) if err != nil { - log.Fatal(err) + return nil, errors.Wrap(err, "could not create main handler") } http.Handle("/", handler) } - return app + return app, nil } func main() { @@ -204,5 +205,13 @@ func main() { pool := newPool(options.RedisServer) options.pool = pool - NewApp(options).Run() + app, err := NewApp(options) + if err != nil { + log.Fatal(err) + } + + err = app.Run() + if err != nil { + log.Fatal(err) + } }