[#1559] shard: Do not consult metabase in a degraded mode

Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
Evgenii Stratonikov 2022-06-29 14:27:36 +03:00 committed by fyrchik
parent 339864b720
commit c8911d72d0
17 changed files with 114 additions and 67 deletions

View file

@ -63,16 +63,27 @@ func (s *Shard) Head(prm HeadPrm) (HeadRes, error) {
// otherwise object seems to be flushed to metabase
}
var headParams meta.GetPrm
headParams.SetAddress(prm.addr)
headParams.SetRaw(prm.raw)
var obj *objectSDK.Object
var err error
if s.GetMode().NoMetabase() {
var getPrm GetPrm
getPrm.SetAddress(prm.addr)
getPrm.SetIgnoreMeta(true)
res, err := s.metaBase.Get(headParams)
if err != nil {
return HeadRes{}, err
var res GetRes
res, err = s.Get(getPrm)
obj = res.Object()
} else {
var headParams meta.GetPrm
headParams.SetAddress(prm.addr)
headParams.SetRaw(prm.raw)
var res meta.GetRes
res, err = s.metaBase.Get(headParams)
obj = res.Header()
}
return HeadRes{
obj: res.Header(),
}, nil
obj: obj,
}, err
}