Fix ZKObject compressed data size estimate

The `walk()` method used a wrong variable name for the compressed data
size. Because of that the compressed size was always returned as 0 for
nested ZKObjects leading to a wrong total.

Change-Id: I2081f1100fe1733b9c1c161d3a65086359bd81e8
This commit is contained in:
Simon Westphahl 2022-03-15 11:13:43 +01:00
parent 0912548486
commit 586516d8fa
2 changed files with 10 additions and 2 deletions

View File

@ -1634,9 +1634,17 @@ class TestZKObject(ZooKeeperBaseTestCase):
'/zuul/pipeline/fake_tenant')
self.assertEqual(pipeline2.foo, 'bar')
compressed_size, uncompressed_size = pipeline1.estimateDataSize()
compressed_size, uncompressed_size = pipeline2.estimateDataSize()
self.assertTrue(compressed_size != uncompressed_size != 0)
# Test that nested ZKObject sizes are summed up correctly
p1_compressed, p1_uncompressed = pipeline1.estimateDataSize()
p2_compressed, p2_uncompressed = pipeline2.estimateDataSize()
pipeline2._set(other=pipeline1)
compressed_size, uncompressed_size = pipeline2.estimateDataSize()
self.assertEqual(compressed_size, p1_compressed + p2_compressed)
self.assertEqual(uncompressed_size, p1_uncompressed + p2_uncompressed)
def get_ltime(obj):
zstat = self.zk_client.client.exists(obj.getPath())
return zstat.last_modified_transaction_id

View File

@ -211,7 +211,7 @@ class ZKObject:
if obj in seen:
return 0, 0
seen.add(obj)
compress, uncompressed = obj.estimateDataSize(seen)
compressed, uncompressed = obj.estimateDataSize(seen)
elif (isinstance(obj, dict) or
isinstance(obj, types.MappingProxyType)):
for sub in obj.values():