From 673902b14458f32fbf47efa3757279872bdfcb7e Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 21 Feb 2026 15:29:40 +0800 Subject: repository, {ref,object}store: Make stores own their roots --- refstore/loose/store.go | 4 ++-- refstore/reftable/store.go | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'refstore') diff --git a/refstore/loose/store.go b/refstore/loose/store.go index 8eb485e9..e4dc3a34 100644 --- a/refstore/loose/store.go +++ b/refstore/loose/store.go @@ -10,7 +10,7 @@ import ( // Store reads loose references from a repository root. // -// Store does not own root. Callers are responsible for closing root. +// Store owns root and closes it in Close. type Store struct { // root is the repository root capability. root *os.Root @@ -33,5 +33,5 @@ func New(root *os.Root, algo objectid.Algorithm) (*Store, error) { // Close releases resources associated with the backend. func (store *Store) Close() error { - return nil + return store.root.Close() } diff --git a/refstore/reftable/store.go b/refstore/reftable/store.go index ac730a4b..7c02c157 100644 --- a/refstore/reftable/store.go +++ b/refstore/reftable/store.go @@ -15,7 +15,7 @@ import ( // Store reads references from a reftable stack rooted at $GIT_DIR/reftable. // -// Store does not own root. Callers are responsible for closing root. +// Store owns root and closes it in Close. type Store struct { // root is the reftable directory capability. root *os.Root @@ -53,8 +53,8 @@ func (store *Store) Close() error { return nil } store.closed = true + root := store.root tables := store.tables - store.tables = nil store.stateMu.Unlock() var closeErr error @@ -66,6 +66,9 @@ func (store *Store) Close() error { closeErr = err } } + if err := root.Close(); err != nil && closeErr == nil { + closeErr = err + } return closeErr } -- cgit v1.3.1-10-gc9f91