[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(
|
setattr(
|
||||||
getattr(node, self.nxt), self.prv, getattr(node, self.prv)
|
getattr(node, self.nxt), self.prv, getattr(node, self.prv)
|
||||||
) # node.next.prev = node.prev
|
) # 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]:
|
def _get_lru(self) -> Optional[TreeNode]:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -157,6 +157,9 @@ class LRUList:
|
|||||||
setattr(
|
setattr(
|
||||||
getattr(node, self.nxt), self.prv, getattr(node, self.prv)
|
getattr(node, self.nxt), self.prv, getattr(node, self.prv)
|
||||||
) # node.next.prev = node.prev
|
) # 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]:
|
def _get_lru(self) -> Optional[TreeNode]:
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -124,6 +124,9 @@ class UnifiedLRUList:
|
|||||||
pt = self._pt
|
pt = self._pt
|
||||||
node.lru_prev[pt].lru_next[pt] = node.lru_next[pt]
|
node.lru_prev[pt].lru_next[pt] = node.lru_next[pt]
|
||||||
node.lru_next[pt].lru_prev[pt] = node.lru_prev[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):
|
def insert_mru(self, node: UnifiedTreeNode):
|
||||||
assert node.id not in self.cache
|
assert node.id not in self.cache
|
||||||
|
|||||||
Reference in New Issue
Block a user