aboutsummaryrefslogtreecommitdiff
path: root/objectstore
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-02-21 15:29:40 +0800
committerGravatar Runxi Yu2026-02-21 15:29:40 +0800
commit673902b14458f32fbf47efa3757279872bdfcb7e (patch)
treecdcae5d8c7ee01e4931a306931fc79c01c1ea406 /objectstore
parentrepository: Add passthrough ReadStored*; add ref convenience funcs (diff)
signatureNo signature
repository, {ref,object}store: Make stores own their roots
Diffstat (limited to 'objectstore')
-rw-r--r--objectstore/loose/store.go7
-rw-r--r--objectstore/packed/store.go13
2 files changed, 10 insertions, 10 deletions
diff --git a/objectstore/loose/store.go b/objectstore/loose/store.go
index b0f64971..05459a6c 100644
--- a/objectstore/loose/store.go
+++ b/objectstore/loose/store.go
@@ -9,11 +9,11 @@ import (
// Store reads loose Git objects from an objects directory 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 objects directory capability used for all object file access.
// Object files are opened by relative paths like "<first2>/<rest>".
- // Store does not own this root.
+ // Store owns this root.
root *os.Root
// algo is the expected object ID algorithm for lookups.
algo objectid.Algorithm
@@ -32,6 +32,5 @@ func New(root *os.Root, algo objectid.Algorithm) (*Store, error) {
// Close releases resources associated with the backend.
func (store *Store) Close() error {
- _ = store
- return nil
+ return store.root.Close()
}
diff --git a/objectstore/packed/store.go b/objectstore/packed/store.go
index fc2e1c10..ace11782 100644
--- a/objectstore/packed/store.go
+++ b/objectstore/packed/store.go
@@ -12,7 +12,7 @@ import (
// Store reads Git objects from pack/index files under an objects/pack 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 objects/pack capability used for all file access.
root *os.Root
@@ -65,10 +65,9 @@ func (store *Store) Close() error {
return nil
}
store.closed = true
+ root := store.root
packs := store.packs
- store.packs = make(map[string]*packFile)
indexes := store.indexes
- store.indexes = nil
store.stateMu.Unlock()
var closeErr error
@@ -86,10 +85,12 @@ func (store *Store) Close() error {
}
}
store.cacheMu.Lock()
- if store.deltaCache != nil {
- store.deltaCache.clear()
- }
+ store.deltaCache.clear()
store.cacheMu.Unlock()
+
+ if err := root.Close(); err != nil && closeErr == nil {
+ closeErr = err
+ }
return closeErr
}