swarm/storage/localstore: lock item address in collectGarbage iterator

This commit is contained in:
Janos Guljas 2018-12-21 15:16:42 +01:00
parent 5edd22d075
commit 95726d73d6

View file

@ -79,6 +79,13 @@ func (db *DB) collectGarbage() (collectedCount int64, done bool, err error) {
done = true
err = db.gcIndex.Iterate(func(item shed.Item) (stop bool, err error) {
// protect parallel updates
unlock, err := db.lockAddr(item.Address)
if err != nil {
return false, err
}
defer unlock()
gcSize := atomic.LoadInt64(&db.gcSize)
if gcSize-collectedCount <= target {
return true, nil