修复ttlcache可能缺失回收数据的问题

This commit is contained in:
GoEdgeLab
2024-04-20 22:22:24 +08:00
parent 0ebf03665e
commit c96a38eacd

View File

@@ -55,17 +55,19 @@ func (this *List) Add(itemId uint64, expiresAt int64) {
if oldExpiresAt == expiresAt { if oldExpiresAt == expiresAt {
return return
} }
delete(this.expireMap, oldExpiresAt) delete(this.expireMap[oldExpiresAt], itemId)
if len(this.expireMap[oldExpiresAt]) == 0 {
delete(this.expireMap, oldExpiresAt)
}
} }
expireItemMap, ok := this.expireMap[expiresAt] expireItemMap, ok := this.expireMap[expiresAt]
if ok { if ok {
expireItemMap[itemId] = zero.New() expireItemMap[itemId] = zero.New()
} else { } else {
expireItemMap = ItemMap{ this.expireMap[expiresAt] = ItemMap{
itemId: zero.New(), itemId: zero.New(),
} }
this.expireMap[expiresAt] = expireItemMap
} }
this.itemsMap[itemId] = expiresAt this.itemsMap[itemId] = expiresAt