[#1103] node: Reduce amount of lines for method StorageEngine.head

Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
This commit is contained in:
Anton Nikiforov 2024-04-23 15:21:29 +03:00
parent 700e891b85
commit 167c52a1a9

View file

@ -67,20 +67,17 @@ func (e *StorageEngine) Head(ctx context.Context, prm HeadPrm) (res HeadRes, err
func (e *StorageEngine) head(ctx context.Context, prm HeadPrm) (HeadRes, error) { func (e *StorageEngine) head(ctx context.Context, prm HeadPrm) (HeadRes, error) {
ctx, span := tracing.StartSpanFromContext(ctx, "StorageEngine.head") ctx, span := tracing.StartSpanFromContext(ctx, "StorageEngine.head")
defer span.End() defer span.End()
if e.metrics != nil { if e.metrics != nil {
defer elapsed("Head", e.metrics.AddMethodDuration)() defer elapsed("Head", e.metrics.AddMethodDuration)()
} }
var ( var (
head *objectSDK.Object head *objectSDK.Object
siErr *objectSDK.SplitInfoError siErr *objectSDK.SplitInfoError
outSI *objectSDK.SplitInfo outSI *objectSDK.SplitInfo
outError error = new(apistatus.ObjectNotFound) outError error = new(apistatus.ObjectNotFound)
shPrm shard.HeadPrm
) )
var shPrm shard.HeadPrm
shPrm.SetAddress(prm.addr) shPrm.SetAddress(prm.addr)
shPrm.SetRaw(prm.raw) shPrm.SetRaw(prm.raw)
@ -94,44 +91,34 @@ func (e *StorageEngine) head(ctx context.Context, prm HeadPrm) (HeadRes, error)
if outSI == nil { if outSI == nil {
outSI = objectSDK.NewSplitInfo() outSI = objectSDK.NewSplitInfo()
} }
util.MergeSplitInfo(siErr.SplitInfo(), outSI) util.MergeSplitInfo(siErr.SplitInfo(), outSI)
_, withLink := outSI.Link() _, withLink := outSI.Link()
_, withLast := outSI.LastPart() _, withLast := outSI.LastPart()
// stop iterating over shards if SplitInfo structure is complete // stop iterating over shards if SplitInfo structure is complete
if withLink && withLast { if withLink && withLast {
return true return true
} }
return false return false
case client.IsErrObjectAlreadyRemoved(err): case client.IsErrObjectAlreadyRemoved(err):
outError = err outError = err
return true // stop, return it back return true // stop, return it back
case shard.IsErrObjectExpired(err): case shard.IsErrObjectExpired(err):
// object is found but should not // object is found but should not
// be returned // be returned
outError = new(apistatus.ObjectNotFound) outError = new(apistatus.ObjectNotFound)
return true return true
default: default:
e.reportShardError(sh, "could not head object from shard", err) e.reportShardError(sh, "could not head object from shard", err)
return false return false
} }
} }
head = res.Object() head = res.Object()
return true return true
}) })
if outSI != nil { if outSI != nil {
return HeadRes{}, logicerr.Wrap(objectSDK.NewSplitInfoError(outSI)) return HeadRes{}, logicerr.Wrap(objectSDK.NewSplitInfoError(outSI))
} } else if head == nil {
if head == nil {
return HeadRes{}, outError return HeadRes{}, outError
} }