diff --git a/os/gcache/gcache_mem_cache.go b/os/gcache/gcache_mem_cache.go index 6759ed8a2..cd9bf46ec 100644 --- a/os/gcache/gcache_mem_cache.go +++ b/os/gcache/gcache_mem_cache.go @@ -247,7 +247,11 @@ func (c *memCache) GetOrSet(key interface{}, value interface{}, duration time.Du // It does nothing if function returns nil. func (c *memCache) GetOrSetFunc(key interface{}, f func() interface{}, duration time.Duration) interface{} { if v := c.Get(key); v == nil { - return c.doSetWithLockCheck(key, f(), duration) + value := f() + if value == nil { + return nil + } + return c.doSetWithLockCheck(key, value, duration) } else { return v }