From 56013c3fcf492bfb44566563413c8138bbaad482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alfonso=20Subiotto=20Marqu=C3=A9s?= Date: Wed, 26 Jun 2024 19:23:49 +0200 Subject: [PATCH] *: clean up txPool even on error (#914) This would otherwise leak goroutines if an error was encountered closing the WAL. --- db.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/db.go b/db.go index 32056b7f1..5e8f08891 100644 --- a/db.go +++ b/db.go @@ -1000,16 +1000,17 @@ func (db *DB) Close(options ...CloseOption) error { } func (db *DB) closeInternal() error { - if db.columnStore.enableWAL && db.wal != nil { - if err := db.wal.Close(); err != nil { - return err + defer func() { + // Clean up the txPool even on error. + if db.txPool != nil { + db.txPool.Stop() } - } - if db.txPool != nil { - db.txPool.Stop() - } + }() - return nil + if !db.columnStore.enableWAL || db.wal == nil { + return nil + } + return db.wal.Close() } func (db *DB) maintainWAL() {