diff --git a/pkg/local_object_storage/writecache/delete.go b/pkg/local_object_storage/writecache/delete.go index 0a4f4d658..cedb9f4ae 100644 --- a/pkg/local_object_storage/writecache/delete.go +++ b/pkg/local_object_storage/writecache/delete.go @@ -18,6 +18,7 @@ import ( // Delete removes object from write-cache. // // Returns an error of type apistatus.ObjectNotFound if object is missing in write-cache. +// Returns ErrNotInitialized if write-cache has not been initialized yet. func (c *cache) Delete(ctx context.Context, addr oid.Address) error { ctx, span := tracing.StartSpanFromContext(ctx, "writecache.Delete", trace.WithAttributes( @@ -32,7 +33,9 @@ func (c *cache) Delete(ctx context.Context, addr oid.Address) error { c.metrics.Delete(time.Since(startedAt), deleted, storageType) }() - c.modeMtx.RLock() + if !c.modeMtx.TryRLock() { + return ErrNotInitialized + } defer c.modeMtx.RUnlock() if c.readOnly() { return ErrReadOnly diff --git a/pkg/local_object_storage/writecache/put.go b/pkg/local_object_storage/writecache/put.go index 6fc655c65..8b6c09e9a 100644 --- a/pkg/local_object_storage/writecache/put.go +++ b/pkg/local_object_storage/writecache/put.go @@ -34,7 +34,9 @@ func (c *cache) Put(ctx context.Context, prm common.PutPrm) (common.PutRes, erro c.metrics.Put(time.Since(startedAt), added, storageType) }() - c.modeMtx.RLock() + if !c.modeMtx.TryRLock() { + return common.PutRes{}, ErrNotInitialized + } defer c.modeMtx.RUnlock() if c.readOnly() { return common.PutRes{}, ErrReadOnly