aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--cache/dynacache/dynacache.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/cache/dynacache/dynacache.go b/cache/dynacache/dynacache.go
index 85b360138..0fd51590c 100644
--- a/cache/dynacache/dynacache.go
+++ b/cache/dynacache/dynacache.go
@@ -119,7 +119,8 @@ func (o OptionsPartition) CalculateMaxSize(maxSizePerPartition int) int {
// A dynamic partitioned cache.
type Cache struct {
- mu sync.RWMutex
+ mu sync.RWMutex
+ resizeMu sync.Mutex
partitions map[string]PartitionManager
@@ -231,6 +232,12 @@ func (c *Cache) Stop() {
}
func (c *Cache) adjustCurrentMaxSize() {
+ if !c.resizeMu.TryLock() {
+ // Prevent multiple concurrent resizes.
+ return
+ }
+ defer c.resizeMu.Unlock()
+
c.mu.RLock()
defer c.mu.RUnlock()