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).
This commit is contained in:
jholdstock 2023-08-19 09:30:21 +01:00 committed by Jamie Holdstock
parent bd41dbee63
commit 350a3f5bb2

View File

@ -51,11 +51,6 @@ func run() int {
apiLog := cfg.logger("API") apiLog := cfg.logger("API")
rpcLog := cfg.logger("RPC") 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. // Show version at startup.
log.Criticalf("Version %s (Go version %s %s/%s)", version.String(), runtime.Version(), log.Criticalf("Version %s (Go version %s %s/%s)", version.String(), runtime.Version(),
runtime.GOOS, runtime.GOARCH) runtime.GOOS, runtime.GOARCH)
@ -73,22 +68,26 @@ func run() int {
log.Warnf("") log.Warnf("")
} }
// WaitGroup for services to signal when they have shutdown cleanly.
var shutdownWg sync.WaitGroup
defer log.Criticalf("Shutdown complete") defer log.Criticalf("Shutdown complete")
// Open database. // Open database.
db, err := database.Open(cfg.dbPath, dbLog, maxVoteChangeRecords) db, err := database.Open(cfg.dbPath, dbLog, maxVoteChangeRecords)
if err != nil { if err != nil {
log.Errorf("Database error: %v", err) log.Errorf("Database error: %v", err)
requestShutdown()
shutdownWg.Wait()
return 1 return 1
} }
writeBackup := true writeBackup := true
defer db.Close(writeBackup) 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) db.WritePeriodicBackups(shutdownCtx, &shutdownWg, cfg.BackupInterval)
// Create RPC client for local dcrd instance (used for broadcasting and // Create RPC client for local dcrd instance (used for broadcasting and