Skip to content

Commit b2b2f14

Browse files
authored
Merge pull request #33486: Cherry-pick #33483 to release 2.62.0 (Fix bounded trie merge when merging on empty trie)
2 parents 88f1f3c + e8cd8a6 commit b2b2f14

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

sdks/python/apache_beam/metrics/cells.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -746,7 +746,7 @@ def merge(self, other: '_BoundedTrieNode') -> int:
746746
delta = 0
747747
elif not self._children:
748748
self._children = other._children
749-
delta = self._size - other._size
749+
delta = other._size - self._size
750750
else:
751751
delta = 0
752752
other_child: '_BoundedTrieNode'

sdks/python/apache_beam/metrics/cells_test.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,23 @@ def test_bounded_trie_data_combine_trim(self):
420420
BoundedTrieData(root=right, bound=3)).get_result(),
421421
set([('a', True), ('b', 'd', False), ('c', 'd', False)]))
422422

423+
def test_merge_on_empty_node(self):
424+
root1 = _BoundedTrieNode()
425+
root2 = _BoundedTrieNode()
426+
root2.add_all([["a", "b", "c"], ["a", "b", "d"], ["a", "e"]])
427+
self.assertEqual(2, root1.merge(root2))
428+
self.assertEqual(3, root1.size())
429+
self.assertFalse(root1._truncated)
430+
431+
def test_merge_with_empty_node(self):
432+
root1 = _BoundedTrieNode()
433+
root1.add_all([["a", "b", "c"], ["a", "b", "d"], ["a", "e"]])
434+
root2 = _BoundedTrieNode()
435+
436+
self.assertEqual(0, root1.merge(root2))
437+
self.assertEqual(3, root1.size())
438+
self.assertFalse(root1._truncated)
439+
423440

424441
if __name__ == '__main__':
425442
unittest.main()

0 commit comments

Comments
 (0)