fix: collect prefix hash values iteratively (#38204)
This commit is contained in:
@@ -163,9 +163,11 @@ class TreeNode:
|
|||||||
return self.hash_value[-1]
|
return self.hash_value[-1]
|
||||||
|
|
||||||
def get_prefix_hash_values(self, node: TreeNode) -> List[str]:
|
def get_prefix_hash_values(self, node: TreeNode) -> List[str]:
|
||||||
if node is None or node.hash_value is None:
|
chunks = []
|
||||||
return []
|
while node is not None and node.hash_value is not None:
|
||||||
return node.get_prefix_hash_values(node.parent) + node.hash_value
|
chunks.append(node.hash_value)
|
||||||
|
node = node.parent
|
||||||
|
return [value for chunk in reversed(chunks) for value in chunk]
|
||||||
|
|
||||||
def __lt__(self, other: TreeNode):
|
def __lt__(self, other: TreeNode):
|
||||||
return self.last_access_time < other.last_access_time
|
return self.last_access_time < other.last_access_time
|
||||||
|
|||||||
@@ -311,10 +311,11 @@ class TreeNode:
|
|||||||
return self.hash_value[-1]
|
return self.hash_value[-1]
|
||||||
|
|
||||||
def get_prefix_hash_values(self, node: TreeNode) -> List[str]:
|
def get_prefix_hash_values(self, node: TreeNode) -> List[str]:
|
||||||
if node is None or node.hash_value is None:
|
chunks = []
|
||||||
return []
|
while node is not None and node.hash_value is not None:
|
||||||
|
chunks.append(node.hash_value)
|
||||||
return node.get_prefix_hash_values(node.parent) + node.hash_value
|
node = node.parent
|
||||||
|
return [value for chunk in reversed(chunks) for value in chunk]
|
||||||
|
|
||||||
def __lt__(self, other: TreeNode):
|
def __lt__(self, other: TreeNode):
|
||||||
return self.last_access_time < other.last_access_time
|
return self.last_access_time < other.last_access_time
|
||||||
|
|||||||
@@ -165,10 +165,11 @@ class UnifiedTreeNode:
|
|||||||
return self.hash_value[-1]
|
return self.hash_value[-1]
|
||||||
|
|
||||||
def get_prefix_hash_values(self, node: UnifiedTreeNode) -> list[str]:
|
def get_prefix_hash_values(self, node: UnifiedTreeNode) -> list[str]:
|
||||||
if node is None or node.hash_value is None:
|
chunks = []
|
||||||
return []
|
while node is not None and node.hash_value is not None:
|
||||||
|
chunks.append(node.hash_value)
|
||||||
return node.get_prefix_hash_values(node.parent) + node.hash_value
|
node = node.parent
|
||||||
|
return [value for chunk in reversed(chunks) for value in chunk]
|
||||||
|
|
||||||
|
|
||||||
class UnifiedLRUList:
|
class UnifiedLRUList:
|
||||||
|
|||||||
Reference in New Issue
Block a user