Skip to content

Commit 3fd65c3

Browse files
committed
reset more merged protobuf objects
1 parent 748b861 commit 3fd65c3

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

cylc/flow/data_store_mgr.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,15 @@
231231
WORKFLOW: {'log_records': 10}
232232
}
233233

234+
# Data types for protobuf memory reset
235+
RESET_PROTOBUF_TYPES = {
236+
TASKS,
237+
TASK_PROXIES,
238+
FAMILIES,
239+
FAMILY_PROXIES,
240+
WORKFLOW,
241+
}
242+
234243
# internal runtime to protobuf field name mapping
235244
RUNTIME_CFG_MAP_TO_FIELD = {
236245
'completion': 'completion',
@@ -421,6 +430,10 @@ def apply_delta(key, delta, data):
421430

422431
# Merge in updated fields
423432
if getattr(delta, 'updated', False):
433+
# Flag for clearing memory accumulation
434+
reset_protobuf = False
435+
if key in RESET_PROTOBUF_TYPES:
436+
reset_protobuf = True
424437
if key == WORKFLOW:
425438
# Clear fields that require overwrite with delta
426439
field_set = {f.name for f, _ in delta.updated.ListFields()}
@@ -437,6 +450,10 @@ def apply_delta(key, delta, data):
437450
lst = getattr(data[key], field_name)
438451
while len(lst) > max_len:
439452
lst.pop(0)
453+
454+
# Clear memory accumulation
455+
if reset_protobuf:
456+
data[key] = reset_protobuf_object(PbWorkflow, data[key])
440457
else:
441458
for element in delta.updated:
442459
try:
@@ -446,8 +463,9 @@ def apply_delta(key, delta, data):
446463
if field.name in CLEAR_FIELD_MAP[key]:
447464
data_element.ClearField(field.name)
448465
data_element.MergeFrom(element)
466+
449467
# Clear memory accumulation
450-
if key in (TASKS, FAMILIES):
468+
if reset_protobuf:
451469
data[key][element.id] = reset_protobuf_object(
452470
MESSAGE_MAP[key],
453471
data_element
@@ -461,10 +479,6 @@ def apply_delta(key, delta, data):
461479
)
462480
continue
463481

464-
# Clear memory accumulation
465-
if key == WORKFLOW:
466-
data[key] = reset_protobuf_object(PbWorkflow, data[key])
467-
468482
# Prune data elements
469483
if hasattr(delta, 'pruned'):
470484
# UIS flag to prune workflow, set externally.

0 commit comments

Comments
 (0)