aboutsummaryrefslogtreecommitdiff
path: root/objectstore/packed/store_lookup.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-25 14:30:31 +0000
committerGravatar Runxi Yu2026-03-25 14:30:31 +0000
commitbfa0a3f5f18b752a6ebd3d5b37411c6871f7bb17 (patch)
tree8ee2479273e2b34d284c30703c2be48efe197556 /objectstore/packed/store_lookup.go
parent*: Resort import order (diff)
signatureNo signature
*: objectstore -> object/store
Diffstat (limited to 'objectstore/packed/store_lookup.go')
-rw-r--r--objectstore/packed/store_lookup.go106
1 files changed, 0 insertions, 106 deletions
diff --git a/objectstore/packed/store_lookup.go b/objectstore/packed/store_lookup.go
deleted file mode 100644
index 78a54c07..00000000
--- a/objectstore/packed/store_lookup.go
+++ /dev/null
@@ -1,106 +0,0 @@
-package packed
-
-import (
- "errors"
-
- objectid "codeberg.org/lindenii/furgit/object/id"
- "codeberg.org/lindenii/furgit/objectstore"
-)
-
-// lookup resolves one object ID to its pack location.
-func (store *Store) lookup(id objectid.ObjectID) (location, error) {
- var zero location
- if id.Algorithm() != store.algo {
- return zero, errors.New("objectstore/packed: object id algorithm mismatch")
- }
-
- snapshot, err := store.ensureCandidates()
- if err != nil {
- return zero, err
- }
-
- loc, ok, err := store.lookupInCandidates(id, snapshot)
- if err != nil {
- return zero, err
- }
-
- if ok {
- return loc, nil
- }
-
- if store.refreshPolicy == RefreshPolicyOnMissing { //nolint:nestif
- err = store.Refresh()
- if err != nil {
- return zero, err
- }
-
- refreshed := store.candidates.Load()
- if refreshed != nil && refreshed != snapshot {
- loc, ok, err = store.lookupInCandidates(id, refreshed)
- if err != nil {
- return zero, err
- }
-
- if ok {
- return loc, nil
- }
- }
- }
-
- return zero, objectstore.ErrObjectNotFound
-}
-
-func (store *Store) lookupInCandidates(
- id objectid.ObjectID,
- snapshot *candidateSnapshot,
-) (location, bool, error) {
- var zero location
-
- nextPackName := store.firstCandidatePackName(snapshot)
- for nextPackName != "" {
- candidate, ok := snapshot.candidateByPack[nextPackName]
- if !ok {
- nextPackName = store.firstCandidatePackName(snapshot)
-
- continue
- }
-
- nextPackName = store.nextCandidatePackName(candidate.packName, snapshot)
-
- index, err := store.openIndex(candidate)
- if err != nil {
- return zero, false, err
- }
-
- offset, ok, err := index.lookup(id)
- if err != nil {
- return zero, false, err
- }
-
- if ok {
- store.touchCandidate(candidate.packName)
-
- return location{packName: index.packName, offset: offset}, true, nil
- }
- }
-
- for _, candidate := range snapshot.candidates {
- index, err := store.openIndex(candidate)
- if err != nil {
- return zero, false, err
- }
-
- offset, ok, err := index.lookup(id)
- if err != nil {
- return zero, false, err
- }
-
- if ok {
- store.touchCandidate(candidate.packName)
-
- return location{packName: index.packName, offset: offset}, true, nil
- }
- }
-
- return zero, false, nil
-}