Fetch does not return stale items

This commit is contained in:
David Palm
2016-02-03 16:07:59 +01:00
parent 74754c77cc
commit d5307b40af
2 changed files with 22 additions and 5 deletions

View File

@@ -81,12 +81,12 @@ func (c *Cache) Replace(key string, value interface{}) bool {
return true
}
// Attempts to get the value from the cache and calles fetch on a miss.
// If fetch returns an error, no value is cached and the error is returned back
// to the caller.
// Attempts to get the value from the cache and calles fetch on a miss (missing
// or stale item). If fetch returns an error, no value is cached and the error
// is returned back to the caller.
func (c *Cache) Fetch(key string, duration time.Duration, fetch func() (interface{}, error)) (*Item, error) {
item := c.Get(key)
if item != nil {
if item != nil && !item.Expired() {
return item, nil
}
value, err := fetch()