diff --git a/pkg/local_object_storage/writecache/flush.go b/pkg/local_object_storage/writecache/flush.go index 5b8333b5b..3d15de1a5 100644 --- a/pkg/local_object_storage/writecache/flush.go +++ b/pkg/local_object_storage/writecache/flush.go @@ -117,13 +117,20 @@ func (c *cache) flushBigObjects() { select { case <-tick.C: _ = c.fsTree.Iterate(func(addr *objectSDK.Address, data []byte) error { - if _, ok := c.store.flushed.Peek(addr.String()); ok { + sAddr := addr.String() + + if _, ok := c.store.flushed.Peek(sAddr); ok { return nil } if _, err := c.blobstor.PutRaw(addr, data); err != nil { c.log.Error("cant flush object to blobstor", zap.Error(err)) + return nil } + + // mark object as flushed + c.store.flushed.Add(sAddr, false) + return nil }) case <-c.closeCh: