From a5da665e6947fba9a8b2e72c02761ee6407f16da Mon Sep 17 00:00:00 2001 From: Pavel Karpy Date: Thu, 4 Aug 2022 14:59:30 +0300 Subject: [PATCH] [#1656] meta: Fix `MatchCommonPrefix` operation Return all the objects on the empty common prefix search without search optimizations that breaks boltDB logic. Signed-off-by: Pavel Karpy --- pkg/local_object_storage/metabase/db.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/local_object_storage/metabase/db.go b/pkg/local_object_storage/metabase/db.go index 82dad6d9..a05edf6c 100644 --- a/pkg/local_object_storage/metabase/db.go +++ b/pkg/local_object_storage/metabase/db.go @@ -222,6 +222,12 @@ func stringCommonPrefixMatcherBucket(b *bbolt.Bucket, fKey string, fVal string, prefix = val[:len(val)-1] } + if len(val) == 0 { + // empty common prefix, all the objects + // satisfy that filter + return b.ForEach(f) + } + c := b.Cursor() for k, v := c.Seek(val); bytes.HasPrefix(k, prefix); k, v = c.Next() { if checkLast && (len(k) == len(prefix) || k[len(prefix)]>>4 != val[len(val)-1]) {