diff options
| author | 2026-06-14 14:13:45 +0000 | |
|---|---|---|
| committer | 2026-06-14 14:13:45 +0000 | |
| commit | c9fdf61bd91875cdc71559cd9bab8314ad8775e1 (patch) | |
| tree | cd970e43d1c47fa8888bbb99f760c8cf13fdf0b8 /object | |
| parent | internal/format/packidx/bloom: Add trailers (diff) | |
object/store/packed, cmd/idx-bloom: NewBuilder wants a PackHash
Diffstat (limited to 'object')
| -rw-r--r-- | object/store/packed/internal/ingest/finalize.go | 9 | ||||
| -rw-r--r-- | object/store/packed/pack.go | 10 |
2 files changed, 13 insertions, 6 deletions
diff --git a/object/store/packed/internal/ingest/finalize.go b/object/store/packed/internal/ingest/finalize.go index 8caf6b2f..afed996c 100644 --- a/object/store/packed/internal/ingest/finalize.go +++ b/object/store/packed/internal/ingest/finalize.go @@ -39,7 +39,7 @@ func (ingestion *ingestion) finalize() (Result, error) { return Result{}, err } - bloomBuilder, err := ingestion.buildBloom(entries) + bloomBuilder, err := ingestion.buildBloom(entries, packHash) if err != nil { return Result{}, err } @@ -97,14 +97,15 @@ func (ingestion *ingestion) finalize() (Result, error) { }, nil } -// buildBloom builds a Bloom filter over the index entries' object IDs. -func (ingestion *ingestion) buildBloom(entries []packidx.Entry) (*bloom.Builder, error) { +// buildBloom builds a Bloom filter over the index entries' object IDs, +// bound to packHash. +func (ingestion *ingestion) buildBloom(entries []packidx.Entry, packHash []byte) (*bloom.Builder, error) { bucketCount, k, err := bloom.RecommendParams(ingestion.objectFormat, len(entries)) if err != nil { return nil, fmt.Errorf("object/store/packed/internal/ingest: %w", err) } - builder, err := bloom.NewBuilder(ingestion.objectFormat, bucketCount, k) + builder, err := bloom.NewBuilder(ingestion.objectFormat, bucketCount, k, packHash) if err != nil { return nil, fmt.Errorf("object/store/packed/internal/ingest: %w", err) } diff --git a/object/store/packed/pack.go b/object/store/packed/pack.go index ba865e51..9cd6162b 100644 --- a/object/store/packed/pack.go +++ b/object/store/packed/pack.go @@ -73,7 +73,7 @@ func openPack(root *os.Root, name string, objectFormat id.ObjectFormat) (*pack, return nil, fmt.Errorf("%w: pack %q: %w", ErrMalformedPackedStore, name, err) } - bloomMapping, filter := openBloom(root, name, objectFormat) + bloomMapping, filter := openBloom(root, name, objectFormat, idx.PackHash()) return &pack{ name: name, @@ -86,7 +86,7 @@ func openPack(root *os.Root, name string, objectFormat id.ObjectFormat) (*pack, }, nil } -func openBloom(root *os.Root, name string, objectFormat id.ObjectFormat) (*mmap.Mmap, *bloom.Bloom) { +func openBloom(root *os.Root, name string, objectFormat id.ObjectFormat, packHash []byte) (*mmap.Mmap, *bloom.Bloom) { mapping, err := mapFile(root, name+".bloom") if err != nil { return nil, nil @@ -99,6 +99,12 @@ func openBloom(root *os.Root, name string, objectFormat id.ObjectFormat) (*mmap. return nil, nil } + if !bytes.Equal(filter.PackHash(), packHash) { + _ = mapping.Close() + + return nil, nil + } + return mapping, &filter } |
