[Bug][RadixTree] Fix LRU list reference cycle leak in radix_cache (#25770)
Co-authored-by: zhangjiadong1@corp.netease.com <zhangjiadong1@corp.netease.com>
This commit is contained in:
co-authored by
zhangjiadong1@corp.netease.com
parent
6e0b7f35ad
commit
33c57b8716
@@ -204,6 +204,9 @@ class LRUList:
|
||||
setattr(
|
||||
getattr(node, self.nxt), self.prv, getattr(node, self.prv)
|
||||
) # node.next.prev = node.prev
|
||||
# Clear self pointers to break reference cycles among evicted nodes.
|
||||
setattr(node, self.prv, None)
|
||||
setattr(node, self.nxt, None)
|
||||
|
||||
def _get_lru(self) -> Optional[TreeNode]:
|
||||
"""
|
||||
|
||||
@@ -157,6 +157,9 @@ class LRUList:
|
||||
setattr(
|
||||
getattr(node, self.nxt), self.prv, getattr(node, self.prv)
|
||||
) # node.next.prev = node.prev
|
||||
# Clear self pointers to break reference cycles among evicted nodes.
|
||||
setattr(node, self.prv, None)
|
||||
setattr(node, self.nxt, None)
|
||||
|
||||
def _get_lru(self) -> Optional[TreeNode]:
|
||||
"""
|
||||
|
||||
@@ -124,6 +124,9 @@ class UnifiedLRUList:
|
||||
pt = self._pt
|
||||
node.lru_prev[pt].lru_next[pt] = node.lru_next[pt]
|
||||
node.lru_next[pt].lru_prev[pt] = node.lru_prev[pt]
|
||||
# Clear self pointers to break reference cycles among evicted nodes.
|
||||
node.lru_prev[pt] = None
|
||||
node.lru_next[pt] = None
|
||||
|
||||
def insert_mru(self, node: UnifiedTreeNode):
|
||||
assert node.id not in self.cache
|
||||
|
||||
Reference in New Issue
Block a user