From c05a0e749bab8a42c993f95b97d3ec55dbc1f842 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Tue, 23 Jul 2024 12:31:12 +0200 Subject: [PATCH] chore: [k212] fix(blooms): Use correct key to populate blockscache at startup (#13626) Co-authored-by: Christian Haudum --- pkg/storage/stores/shipper/bloomshipper/cache.go | 7 +++++-- pkg/storage/stores/shipper/bloomshipper/cache_test.go | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/storage/stores/shipper/bloomshipper/cache.go b/pkg/storage/stores/shipper/bloomshipper/cache.go index bf533dac25b4..203d15684502 100644 --- a/pkg/storage/stores/shipper/bloomshipper/cache.go +++ b/pkg/storage/stores/shipper/bloomshipper/cache.go @@ -100,9 +100,12 @@ func loadBlockDirectories(root string, logger log.Logger) (keys []string, values } if ok, clean := isBlockDir(path, logger); ok { - keys = append(keys, resolver.Block(ref).Addr()) + // the cache key must not contain the directory prefix + // therefore we use the defaultKeyResolver to resolve the block's address + key := defaultKeyResolver{}.Block(ref).Addr() + keys = append(keys, key) values = append(values, NewBlockDirectory(ref, path)) - level.Debug(logger).Log("msg", "found block directory", "ref", ref, "path", path) + level.Debug(logger).Log("msg", "found block directory", "path", path, "key", key) } else { level.Warn(logger).Log("msg", "skip directory entry", "err", "not a block directory containing blooms and series", "path", path) _ = clean(path) diff --git a/pkg/storage/stores/shipper/bloomshipper/cache_test.go b/pkg/storage/stores/shipper/bloomshipper/cache_test.go index 2ce48d5022ed..941b7fa29e99 100644 --- a/pkg/storage/stores/shipper/bloomshipper/cache_test.go +++ b/pkg/storage/stores/shipper/bloomshipper/cache_test.go @@ -99,7 +99,7 @@ func Test_LoadBlocksDirIntoCache(t *testing.T) { require.Equal(t, 1, len(c.entries)) - key := filepath.Join(wd, validDir) + ".tar.gz" + key := validDir + ".tar.gz" // cache key must not contain directory prefix elem, found := c.entries[key] require.True(t, found) blockDir := elem.Value.(*Entry).Value