aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-29 15:43:50 +0000
committerGravatar Runxi Yu2026-03-29 15:45:18 +0000
commitf50ac551c56569e109a8350f27dab53bb2378d4d (patch)
tree0d48976ffaab3455c0c26e2840cb88d2c8d4a3d4
parentci: Disable dupl (diff)
signatureNo signature
*: Remove Close from object/ref store interfaces
At places where you own the object, you should have the literal implementation with Close. If you're using it via the interface, then you probably don't own that store, and you shouldn't be closing it. Thanks to Michael Muré from git-bug for this point.
-rw-r--r--TODO3
-rw-r--r--network/receivepack/service/run_hook.go4
-rw-r--r--object/store/reading.go5
-rw-r--r--ref/store/reading.go6
-rw-r--r--repository/close.go14
-rw-r--r--repository/objects.go2
-rw-r--r--repository/refs.go2
7 files changed, 2 insertions, 34 deletions
diff --git a/TODO b/TODO
index aa4eced5..eb840470 100644
--- a/TODO
+++ b/TODO
@@ -60,6 +60,3 @@ Unstructured ones
try to resolve that probably
* Needs much better diff API
* revwalk/log
-
-
-* Does Close belong in interfaces at all?
diff --git a/network/receivepack/service/run_hook.go b/network/receivepack/service/run_hook.go
index ce8f8b7e..f08cc337 100644
--- a/network/receivepack/service/run_hook.go
+++ b/network/receivepack/service/run_hook.go
@@ -96,10 +96,6 @@ func (service *Service) runHook(
}
defer func() {
- if quarantineObjectsStore != nil {
- _ = quarantineObjectsStore.Close()
- }
-
if quarantinePackedStore != nil {
_ = quarantinePackedStore.Close()
}
diff --git a/object/store/reading.go b/object/store/reading.go
index d27001bf..0e233462 100644
--- a/object/store/reading.go
+++ b/object/store/reading.go
@@ -52,9 +52,4 @@ type ReadingStore interface {
//
// Backends without dynamic discovery should do nothing and return nil.
Refresh() error
-
- // Close releases resources associated with the backend.
- //
- // Labels: MT-Unsafe.
- Close() error
}
diff --git a/ref/store/reading.go b/ref/store/reading.go
index 99f8278c..07814c00 100644
--- a/ref/store/reading.go
+++ b/ref/store/reading.go
@@ -31,10 +31,4 @@ type ReadingStore interface {
//
// Labels: Life-Parent.
List(pattern string) ([]ref.Ref, error)
- // Close releases resources associated with the store.
- //
- // Transactions and batches borrowing the store are invalid after Close.
- //
- // Labels: MT-Unsafe.
- Close() error
}
diff --git a/repository/close.go b/repository/close.go
index 5d728c5b..c1261821 100644
--- a/repository/close.go
+++ b/repository/close.go
@@ -8,20 +8,6 @@ import "errors"
func (repo *Repository) Close() error {
var errs []error
- if repo.refs != nil {
- err := repo.refs.Close()
- if err != nil {
- errs = append(errs, err)
- }
- }
-
- if repo.objects != nil {
- err := repo.objects.Close()
- if err != nil {
- errs = append(errs, err)
- }
- }
-
if repo.commitGraph != nil {
err := repo.commitGraph.Close()
if err != nil {
diff --git a/repository/objects.go b/repository/objects.go
index 62170514..2e63ad65 100644
--- a/repository/objects.go
+++ b/repository/objects.go
@@ -81,7 +81,7 @@ func openObjectStore(
// bytes, or streamed object contents. Callers who want typed object values
// should usually prefer [Repository.Fetcher].
//
-// Labels: Life-Parent, Close-No.
+// Labels: Life-Parent.
//
//nolint:ireturn
func (repo *Repository) Objects() objectstore.ReadingStore {
diff --git a/repository/refs.go b/repository/refs.go
index 0403e001..17816168 100644
--- a/repository/refs.go
+++ b/repository/refs.go
@@ -8,7 +8,7 @@ import refstore "codeberg.org/lindenii/furgit/ref/store"
// A common pattern is to resolve a reference first and then pass the resulting
// object ID to [Repository.Fetcher] or [Repository.Objects].
//
-// Labels: Life-Parent, Close-No.
+// Labels: Life-Parent.
//
//nolint:ireturn
func (repo *Repository) Refs() refstore.ReadWriteStore {