From 397e862a1e698b6f5532a652171b0a84652362f0 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Thu, 9 Sep 2021 15:05:26 +0700 Subject: [PATCH] server: add missing `db.Close` calls before returning (#541) It's better to always close the db before exit, so we will be noticed when any error happens. Otherwise, serious errors can silently happen, e.g, corrupted db, pending write missing ... Fixes #538 --- server/start.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/start.go b/server/start.go index ec9fcb018..627f2c55a 100644 --- a/server/start.go +++ b/server/start.go @@ -164,6 +164,11 @@ func startStandAlone(ctx *server.Context, appCreator types.AppCreator) error { if err != nil { return err } + defer func() { + if err := db.Close(); err != nil { + ctx.Logger.With("error", err).Error("error closing db") + } + }() traceWriterFile := ctx.Viper.GetString(srvflags.TraceStore) traceWriter, err := openTraceWriter(traceWriterFile) @@ -226,6 +231,11 @@ func startInProcess(ctx *server.Context, clientCtx client.Context, appCreator ty logger.Error("failed to open DB", "error", err.Error()) return err } + defer func() { + if err := db.Close(); err != nil { + ctx.Logger.With("error", err).Error("error closing db") + } + }() traceWriter, err := openTraceWriter(traceWriterFile) if err != nil {