From c7538a98e5de7b194ee0079de7302cb1f1945ad7 Mon Sep 17 00:00:00 2001 From: Jordan Knott Date: Sat, 12 Sep 2020 18:23:23 -0500 Subject: [PATCH] fix: segfault on database connection failure --- internal/commands/web.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/internal/commands/web.go b/internal/commands/web.go index cf64bc64..cd5d917d 100644 --- a/internal/commands/web.go +++ b/internal/commands/web.go @@ -40,16 +40,21 @@ func newWebCmd() *cobra.Command { ) var db *sqlx.DB var err error - retryNumber := 0 - for i := 0; retryNumber <= 3; i++ { - retryNumber++ + var retryDuration time.Duration + maxRetryNumber := 4 + for i := 0; i < maxRetryNumber; i++ { db, err = sqlx.Connect("postgres", connection) if err == nil { break } - retryDuration := time.Duration(i*2) * time.Second - log.WithFields(log.Fields{"retryNumber": retryNumber, "retryDuration": retryDuration}).WithError(err).Error("issue connecting to database, retrying") - time.Sleep(retryDuration) + retryDuration = time.Duration(i*2) * time.Second + log.WithFields(log.Fields{"retryNumber": i, "retryDuration": retryDuration}).WithError(err).Error("issue connecting to database, retrying") + if i != maxRetryNumber-1 { + time.Sleep(retryDuration) + } + } + if err != nil { + return err } db.SetMaxOpenConns(25) db.SetMaxIdleConns(25)