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

This commit is contained in:
GoEdgeLab
2024-04-20 22:20:44 +08:00
parent 51ccec3335
commit 712fe441e0
2 changed files with 25 additions and 17 deletions

View File

@@ -55,17 +55,19 @@ func (this *List) Add(itemId uint64, expiresAt int64) {
if oldExpiresAt == expiresAt {
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]
if ok {
expireItemMap[itemId] = zero.New()
} else {
expireItemMap = ItemMap{
this.expireMap[expiresAt] = ItemMap{
itemId: zero.New(),
}
this.expireMap[expiresAt] = expireItemMap
}
this.itemsMap[itemId] = expiresAt