From 193a6606db9cd2df137334282d95f323a1329339 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Mon, 4 May 2015 22:36:43 -0700 Subject: [PATCH] Fix a potential race between ExpireObjects() and Set() over items map --- pkg/storage/drivers/memory/memory_intelligent.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/storage/drivers/memory/memory_intelligent.go b/pkg/storage/drivers/memory/memory_intelligent.go index 8d0d4bbbe..31660f937 100644 --- a/pkg/storage/drivers/memory/memory_intelligent.go +++ b/pkg/storage/drivers/memory/memory_intelligent.go @@ -89,13 +89,14 @@ func (r *Intelligent) ExpireObjects(gcInterval time.Duration) { r.gcInterval = gcInterval go func() { for range time.Tick(gcInterval) { + r.Lock() for key := range r.items { - r.Lock() + if !r.isValid(key) { r.Delete(key) } - r.Unlock() } + r.Unlock() } }() }