forked from TrueCloudLab/frostfs-node
[#92] Ensure policer objects cannot be worked on concurrently
Signed-off-by: Alejandro Lopez <a.lopez@yadro.com>
This commit is contained in:
parent
3223402c90
commit
26acf5689e
2 changed files with 8 additions and 7 deletions
|
@ -29,10 +29,12 @@ func (oiw *objectsInWork) remove(addr oid.Address) {
|
||||||
oiw.Unlock()
|
oiw.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (oiw *objectsInWork) add(addr oid.Address) {
|
func (oiw *objectsInWork) add(addr oid.Address) bool {
|
||||||
oiw.Lock()
|
oiw.Lock()
|
||||||
|
_, exists := oiw.objs[addr]
|
||||||
oiw.objs[addr] = struct{}{}
|
oiw.objs[addr] = struct{}{}
|
||||||
oiw.Unlock()
|
oiw.Unlock()
|
||||||
|
return !exists
|
||||||
}
|
}
|
||||||
|
|
||||||
// Policer represents the utility that verifies
|
// Policer represents the utility that verifies
|
||||||
|
|
|
@ -51,12 +51,11 @@ func (p *Policer) shardPolicyWorker(ctx context.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
p.objsInWork.add(addr.Address)
|
if p.objsInWork.add(addr.Address) {
|
||||||
|
p.processObject(ctx, addr)
|
||||||
p.processObject(ctx, addr)
|
p.cache.Add(addr.Address, time.Now())
|
||||||
|
p.objsInWork.remove(addr.Address)
|
||||||
p.cache.Add(addr.Address, time.Now())
|
}
|
||||||
p.objsInWork.remove(addr.Address)
|
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
p.log.Warn(logs.PolicerPoolSubmission, zap.Error(err))
|
p.log.Warn(logs.PolicerPoolSubmission, zap.Error(err))
|
||||||
|
|
Loading…
Reference in a new issue