forked from TrueCloudLab/frostfs-node
There is a race condition when multiple cache operation try to report the cache size metrics simultaneously. Consider the following example: - the initial total size of objects stored in the cache size is 2 - worker X deletes an object and reads the cache size, which is 1 - worker Y deletes an object and reads the cache size, which is 0 - worker Y reports the cache size it learnt, which is 0 - worker X reports the cache size it learnt, which is 1 As a result, the observed cache size is 1 (i. e. one object remains in the cache), which is incorrect because the actual cache size is 0. To fix this, let's report the metrics periodically in the flush loop. Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com> |
||
---|---|---|
.. | ||
benchmark | ||
cache.go | ||
delete.go | ||
flush.go | ||
flush_test.go | ||
generic_test.go | ||
get.go | ||
iterate.go | ||
limiter.go | ||
limiter_test.go | ||
metrics.go | ||
mode.go | ||
mode_test.go | ||
options.go | ||
put.go | ||
seal.go | ||
state.go | ||
storage.go | ||
upgrade.go | ||
writecache.go |