aboutsummaryrefslogtreecommitdiff
path: root/refstore
diff options
context:
space:
mode:
Diffstat (limited to 'refstore')
-rw-r--r--refstore/loose/store.go4
-rw-r--r--refstore/reftable/store.go7
2 files changed, 7 insertions, 4 deletions
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
}