From 98da20f1a9125b6eea8fcc78c9978c493020a71e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 6 May 2022 14:35:34 +0200 Subject: [PATCH] Manager: vacuum the database at startup --- internal/manager/persistence/db.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/internal/manager/persistence/db.go b/internal/manager/persistence/db.go index 8b11cebc..cb4271f1 100644 --- a/internal/manager/persistence/db.go +++ b/internal/manager/persistence/db.go @@ -33,6 +33,9 @@ func OpenDB(ctx context.Context, dsn string) (*DB, error) { return nil, err } + // Perfom some maintenance at startup. + db.vacuum() + if err := db.migrate(); err != nil { return nil, err } @@ -62,6 +65,7 @@ func openDBWithConfig(uri string, config *gorm.Config) (*DB, error) { db := DB{ gormDB: gormDB, } + return &db, nil } @@ -82,9 +86,14 @@ func (db *DB) PeriodicMaintenanceLoop(ctx context.Context) { } log.Debug().Msg("vacuuming database") - tx := db.gormDB.Exec("vacuum") - if tx.Error != nil { - log.Error().Err(tx.Error).Msg("error vacuuming database") - } + db.vacuum() + } +} + +// vacuum executes the SQL "VACUUM" command, and logs any errors. +func (db *DB) vacuum() { + tx := db.gormDB.Exec("vacuum") + if tx.Error != nil { + log.Error().Err(tx.Error).Msg("error vacuuming database") } }