From 350a3f5bb2bb69b1cf4d7f57e758d4013cff457b Mon Sep 17 00:00:00 2001 From: jholdstock Date: Sat, 19 Aug 2023 09:30:21 +0100 Subject: [PATCH] vspd: Create context and waitgroup near usage. Creating these closer to where they are needed tidies things up a bit, and reduces the chance of them being used unnecessarily (as was being done previously). --- cmd/vspd/main.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/cmd/vspd/main.go b/cmd/vspd/main.go index cd78acf..2790358 100644 --- a/cmd/vspd/main.go +++ b/cmd/vspd/main.go @@ -51,11 +51,6 @@ func run() int { apiLog := cfg.logger("API") rpcLog := cfg.logger("RPC") - // Create a context that is cancelled when a shutdown request is received - // through an interrupt signal. - shutdownCtx := withShutdownCancel(context.Background()) - go shutdownListener(log) - // Show version at startup. log.Criticalf("Version %s (Go version %s %s/%s)", version.String(), runtime.Version(), runtime.GOOS, runtime.GOARCH) @@ -73,22 +68,26 @@ func run() int { log.Warnf("") } - // WaitGroup for services to signal when they have shutdown cleanly. - var shutdownWg sync.WaitGroup defer log.Criticalf("Shutdown complete") // Open database. db, err := database.Open(cfg.dbPath, dbLog, maxVoteChangeRecords) if err != nil { log.Errorf("Database error: %v", err) - requestShutdown() - shutdownWg.Wait() return 1 } writeBackup := true defer db.Close(writeBackup) + // Create a context that is cancelled when a shutdown request is received + // through an interrupt signal. + shutdownCtx := withShutdownCancel(context.Background()) + go shutdownListener(log) + + // WaitGroup for services to signal when they have shutdown cleanly. + var shutdownWg sync.WaitGroup + db.WritePeriodicBackups(shutdownCtx, &shutdownWg, cfg.BackupInterval) // Create RPC client for local dcrd instance (used for broadcasting and