[#2068] writecache: Optimize initial flush existence checking
Signed-off-by: Evgenii Stratonikov <evgeniy@morphbits.ru>
This commit is contained in:
parent
63f604e948
commit
857d2dc3f5
2 changed files with 6 additions and 9 deletions
|
@ -61,18 +61,14 @@ func (c *cache) initFlushMarks() {
|
|||
}
|
||||
|
||||
func (c *cache) isFlushed(addr oid.Address) bool {
|
||||
var existsPrm meta.ExistsPrm
|
||||
existsPrm.SetAddress(addr)
|
||||
var prm meta.StorageIDPrm
|
||||
prm.SetAddress(addr)
|
||||
|
||||
mRes, err := c.metabase.Exists(existsPrm)
|
||||
mRes, err := c.metabase.StorageID(prm)
|
||||
if err != nil {
|
||||
return errors.Is(err, meta.ErrObjectIsExpired) || errors.As(err, new(apistatus.ObjectAlreadyRemoved))
|
||||
return errors.Is(err, meta.ErrObjectIsExpired) || errors.As(err, new(apistatus.ObjectAlreadyRemoved)) || errors.Is(err, apistatus.ObjectNotFound{})
|
||||
}
|
||||
|
||||
if !mRes.Exists() {
|
||||
return false
|
||||
}
|
||||
|
||||
res, err := c.blobstor.Exists(common.ExistsPrm{Address: addr})
|
||||
res, err := c.blobstor.Exists(common.ExistsPrm{Address: addr, StorageID: mRes.StorageID()})
|
||||
return err == nil && res.Exists
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ type Option func(*options)
|
|||
// meta is an interface for a metabase.
|
||||
type metabase interface {
|
||||
Exists(meta.ExistsPrm) (meta.ExistsRes, error)
|
||||
StorageID(meta.StorageIDPrm) (meta.StorageIDRes, error)
|
||||
UpdateStorageID(meta.UpdateStorageIDPrm) (meta.UpdateStorageIDRes, error)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue