Jordan Hrycaj ce713d95fc
Aristo lazily delete larger subtrees (#2560)
* Extract sub-tree deletion functions into separate sub-modules

* Move/rename `aristo_desc.accLruSize` => `aristo_constants.ACC_LRU_SIZE`

* Lazily delete sub-trees

why:
  This gives some control of the memory used to keep the deleted vertices
  in the cached layers. For larger sub-trees, keys and vertices might be
  on the persistent backend to a large extend. This would pull an amount
  of extra information from the backend into the cached layer.

  For lazy deleting it is enough to remember sub-trees by a small set of
  (at most 16) sub-roots to be processed when storing persistent data.
  Marking the tree root deleted immediately allows to let most of the code
  base work as before.

* Comments and cosmetics

* No need to import all for `Aristo` here

* Kludge to make `chronicle` usage in sub-modules work with `fluffy`

why:
  That `fluffy` would not run with any logging in `core_deb` is a problem
  I have known for a while. Up to now, logging was only used for debugging.

  With the current `Aristo` PR, there are cases where logging might be
  wanted but this works only if `chronicles` runs without the
  `json[dynamic]` sinks.

  So this should be re-visited.

* More of a kludge
2024-08-14 08:54:44 +00:00

787 B

  • Some comletions might be needed for the aristo_part module which is a re-implementation of the module supporting proof-mode/partial trees.

    • Complete partMergeStorageData(). This function might not be needed at all unless snap-sync is really revived.
    • For snap-sync, write a proof function verifying whether the partial tree is correct relative to the PartStateRef descriptor.
    • One might need to re-visit the removeCompletedNodes() module when using snap-sync proof features. The algorithm used here assumes that the list of proof nodes is rather small. Also, a right boundary leaf node is typically cleared. This needs to be re-checked when writing the proof function mentioned above.
  • aristo_nearby also qualifies for a re-write, now