diff options
| author | 2026-03-29 15:43:50 +0000 | |
|---|---|---|
| committer | 2026-03-29 15:45:18 +0000 | |
| commit | f50ac551c56569e109a8350f27dab53bb2378d4d (patch) | |
| tree | 0d48976ffaab3455c0c26e2840cb88d2c8d4a3d4 | |
| parent | ci: Disable dupl (diff) | |
| signature | No 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-- | TODO | 3 | ||||
| -rw-r--r-- | network/receivepack/service/run_hook.go | 4 | ||||
| -rw-r--r-- | object/store/reading.go | 5 | ||||
| -rw-r--r-- | ref/store/reading.go | 6 | ||||
| -rw-r--r-- | repository/close.go | 14 | ||||
| -rw-r--r-- | repository/objects.go | 2 | ||||
| -rw-r--r-- | repository/refs.go | 2 |
7 files changed, 2 insertions, 34 deletions
@@ -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 { |
