From c9493005cd2feea44dd1bfdb2ea6c016410a1a1a Mon Sep 17 00:00:00 2001 From: Radu Ioan Fericean Date: Mon, 28 Apr 2014 12:45:21 +0300 Subject: [PATCH] more cache fixes --- cache2go/cache.go | 19 +++++++++++++------ cache2go/cache_test.go | 8 ++++---- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/cache2go/cache.go b/cache2go/cache.go index 2dfea50c9..de12da40e 100644 --- a/cache2go/cache.go +++ b/cache2go/cache.go @@ -67,8 +67,10 @@ func (xe *XEntry) expire() { <-xe.t.C if !xe.keepAlive { xMux.Lock() - delete(xcache, xe.key) - descount(xe.key) + if _, ok := xcache[xe.key]; ok { + delete(xcache, xe.key) + descount(xe.key) + } xMux.Unlock() } } @@ -137,7 +139,10 @@ func GetKeyAge(key string) (time.Duration, error) { func RemKey(key string) { mux.Lock() defer mux.Unlock() - delete(cache, key) + if _, ok := cache[key]; ok { + delete(cache, key) + descount(key) + } xMux.Lock() defer xMux.Unlock() if r, ok := xcache[key]; ok { @@ -145,8 +150,10 @@ func RemKey(key string) { r.timer().Stop() } } - delete(xcache, key) - descount(key) + if _, ok := xcache[key]; ok { + delete(xcache, key) + descount(key) + } } func RemPrefixKey(prefix string) { @@ -235,7 +242,7 @@ func descount(key string) { cMux.Lock() defer cMux.Unlock() prefix := key[:PREFIX_LEN] - if _, ok := counters[prefix]; ok { + if value, ok := counters[prefix]; ok && value > 0 { counters[prefix] -= 1 } } diff --git a/cache2go/cache_test.go b/cache2go/cache_test.go index de39a028e..d5b8d597e 100644 --- a/cache2go/cache_test.go +++ b/cache2go/cache_test.go @@ -75,12 +75,12 @@ func TestFlushNoTimout(t *testing.T) { } func TestRemKey(t *testing.T) { - Cache("t1", "test") - if t1, err := GetCached("t1"); err != nil || t1 != "test" { + Cache("t11_mm", "test") + if t1, err := GetCached("t11_mm"); err != nil || t1 != "test" { t.Error("Error setting cache") } - RemKey("t1") - if t1, err := GetCached("t1"); err == nil || t1 == "test" { + RemKey("t11_mm") + if t1, err := GetCached("t11_mm"); err == nil || t1 == "test" { t.Error("Error removing cached key") } }