fix: collect prefix hash values iteratively (#38204)

This commit is contained in:
Shuwen Wang
2026-09-07 11:10:32 +08:00
committed by GitHub
parent f25848913d
commit 6e312af8c2
3 changed files with 15 additions and 11 deletions
@@ -163,9 +163,11 @@ class TreeNode:
return self.hash_value[-1]
def get_prefix_hash_values(self, node: TreeNode) -> List[str]:
if node is None or node.hash_value is None:
return []
return node.get_prefix_hash_values(node.parent) + node.hash_value
chunks = []
while node is not None and node.hash_value is not None:
chunks.append(node.hash_value)
node = node.parent
return [value for chunk in reversed(chunks) for value in chunk]
def __lt__(self, other: TreeNode):
return self.last_access_time < other.last_access_time
+5 -4
View File
@@ -311,10 +311,11 @@ class TreeNode:
return self.hash_value[-1]
def get_prefix_hash_values(self, node: TreeNode) -> List[str]:
if node is None or node.hash_value is None:
return []
return node.get_prefix_hash_values(node.parent) + node.hash_value
chunks = []
while node is not None and node.hash_value is not None:
chunks.append(node.hash_value)
node = node.parent
return [value for chunk in reversed(chunks) for value in chunk]
def __lt__(self, other: TreeNode):
return self.last_access_time < other.last_access_time
@@ -165,10 +165,11 @@ class UnifiedTreeNode:
return self.hash_value[-1]
def get_prefix_hash_values(self, node: UnifiedTreeNode) -> list[str]:
if node is None or node.hash_value is None:
return []
return node.get_prefix_hash_values(node.parent) + node.hash_value
chunks = []
while node is not None and node.hash_value is not None:
chunks.append(node.hash_value)
node = node.parent
return [value for chunk in reversed(chunks) for value in chunk]
class UnifiedLRUList: