lib/workingsetcache: do not rotate cache if it is in whole state

This should reduce the maximum memory usage for the cache in `whole` state
This commit is contained in:
Aliaksandr Valialkin 2022-02-23 15:59:21 +02:00
parent 54221297d1
commit 6fd85117ac
No known key found for this signature in database
GPG Key ID: A72BEC6CD3D0DED1

View File

@ -172,6 +172,9 @@ func (c *Cache) cacheSizeWatcher() {
return
case <-t.C:
}
if c.loadMode() != split {
continue
}
var cs fastcache.Stats
curr := c.curr.Load().(*fastcache.Cache)
curr.UpdateStats(&cs)
@ -188,10 +191,10 @@ func (c *Cache) cacheSizeWatcher() {
// Do this in the following steps:
// 1) switch to mode=switching
// 2) move curr cache to prev
// 3) create curr with the double size
// 4) wait until curr size exceeds maxBytesSize, i.e. it is populated with new data
// 3) create curr cache with doubled size
// 4) wait until curr cache size exceeds maxBytesSize, i.e. it is populated with new data
// 5) switch to mode=whole
// 6) drop prev
// 6) drop prev cache
c.mu.Lock()
c.setMode(switching)