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