From 6eea0ae6d2cb8bc05c4e2898e42e233e5044f3af Mon Sep 17 00:00:00 2001 From: lfz941 Date: Wed, 31 Jul 2024 11:37:18 +0800 Subject: [PATCH] refactor(store/v2): handle the error returned by `batch.Close` correctly (#21095) --- store/v2/migration/manager.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/store/v2/migration/manager.go b/store/v2/migration/manager.go index e71d97877e..a7ce8204a4 100644 --- a/store/v2/migration/manager.go +++ b/store/v2/migration/manager.go @@ -183,8 +183,13 @@ func (m *Manager) writeChangeset() error { batch := m.db.NewBatch() // Invoking this code in a closure so that defer is called immediately on return // yet not in the for-loop which can leave resource lingering. - err = func() error { - defer batch.Close() + err = func() (err error) { + defer func() { + cErr := batch.Close() + if err == nil { + err = cErr + } + }() if err := batch.Set(csKey, csBytes); err != nil { return fmt.Errorf("failed to write changeset to db.Batch: %w", err)