diff options
| author | 2026-02-21 20:21:55 +0800 | |
|---|---|---|
| committer | 2026-02-21 20:21:55 +0800 | |
| commit | b480c5c4dfaddb9b137f50b1a7651e3bce2ecb98 (patch) | |
| tree | 4952eb430959bbfb5eb95fe0bbcf1675fff02d34 /objectstore/packed/delta_base.go | |
| parent | objectstore/packed: Best-effort touchCandidate (diff) | |
| signature | No signature | |
objectstore/packed: Improve delta base caching
Diffstat (limited to 'objectstore/packed/delta_base.go')
| -rw-r--r-- | objectstore/packed/delta_base.go | 40 |
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 -} |
