Skip to content

Commit a5ae76b

Browse files
committed
Delete expired items before setting
Check if an item exists and it has expired before setting so that onEvicted is actually called. Fixes #48.
1 parent 46f4078 commit a5ae76b

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

cache.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ func (c *cache) Set(k string, x interface{}, d time.Duration) {
5858
e = time.Now().Add(d).UnixNano()
5959
}
6060
c.mu.Lock()
61+
if i, ok := c.items[k]; ok && i.Expired() {
62+
// delete if expired so .onEvicted is called
63+
c.delete(k)
64+
}
65+
6166
c.items[k] = Item{
6267
Object: x,
6368
Expiration: e,

0 commit comments

Comments
 (0)