From 68903c9fd961244ea2a202e031e55dda4e9b72b7 Mon Sep 17 00:00:00 2001 From: Evgenii Stratonikov Date: Mon, 14 Mar 2022 12:49:41 +0300 Subject: [PATCH] [#1143] shard: Support degraded mode in `Get` and `GetRange` Signed-off-by: Evgenii Stratonikov --- pkg/local_object_storage/shard/get.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pkg/local_object_storage/shard/get.go b/pkg/local_object_storage/shard/get.go index b5648db2..42e92c45 100644 --- a/pkg/local_object_storage/shard/get.go +++ b/pkg/local_object_storage/shard/get.go @@ -122,7 +122,15 @@ func (s *Shard) fetchObjectData(addr *addressSDK.Address, skipMeta bool, big, sm } } - if skipMeta { + var exists bool + if !skipMeta { + exists, err = meta.Exists(s.metaBase, addr) + if err != nil && s.GetMode() != ModeDegraded { + return res, false, err + } + } + + if skipMeta || err != nil { res, err = small(s.blobStor, nil) if err == nil || errors.Is(err, object.ErrRangeOutOfBounds) { return res, false, err @@ -131,11 +139,6 @@ func (s *Shard) fetchObjectData(addr *addressSDK.Address, skipMeta bool, big, sm return res, false, err } - exists, err := meta.Exists(s.metaBase, addr) - if err != nil { - return nil, false, err - } - if !exists { var errNotFound apistatus.ObjectNotFound