aboutsummaryrefslogtreecommitdiff
path: root/objectstore/packed/delta_base.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-02-21 20:21:55 +0800
committerGravatar Runxi Yu2026-02-21 20:21:55 +0800
commitb480c5c4dfaddb9b137f50b1a7651e3bce2ecb98 (patch)
tree4952eb430959bbfb5eb95fe0bbcf1675fff02d34 /objectstore/packed/delta_base.go
parentobjectstore/packed: Best-effort touchCandidate (diff)
signatureNo signature
objectstore/packed: Improve delta base caching
Diffstat (limited to 'objectstore/packed/delta_base.go')
-rw-r--r--objectstore/packed/delta_base.go40
1 files changed, 0 insertions, 40 deletions
diff --git a/objectstore/packed/delta_base.go b/objectstore/packed/delta_base.go
deleted file mode 100644
index b1113be7..00000000
--- a/objectstore/packed/delta_base.go
+++ /dev/null
@@ -1,40 +0,0 @@
-package packed
-
-import (
- "fmt"
-
- packfmt "codeberg.org/lindenii/furgit/format/pack"
- "codeberg.org/lindenii/furgit/objecttype"
-)
-
-// deltaResolveBase materializes the base object body for one delta plan.
-func (store *Store) deltaResolveBase(plan deltaPlan) (objecttype.Type, []byte, error) {
- cacheKey := deltaBaseKey{
- packName: plan.baseLoc.packName,
- offset: plan.baseLoc.offset,
- }
-
- store.cacheMu.RLock()
- if ty, content, ok := store.deltaCache.get(cacheKey); ok {
- store.cacheMu.RUnlock()
- return ty, content, nil
- }
- store.cacheMu.RUnlock()
-
- pack, meta, err := store.entryMetaAt(plan.baseLoc)
- if err != nil {
- return objecttype.TypeInvalid, nil, err
- }
- if !packfmt.IsBaseObjectType(meta.ty) {
- return objecttype.TypeInvalid, nil, fmt.Errorf("objectstore/packed: delta plan base is not a base object")
- }
- base, err := inflateAt(pack, meta.dataOffset, meta.size)
- if err != nil {
- return objecttype.TypeInvalid, nil, err
- }
-
- store.cacheMu.Lock()
- store.deltaCache.add(cacheKey, meta.ty, base)
- store.cacheMu.Unlock()
- return meta.ty, base, nil
-}