2019-05-07 Meeting notes: bloat in the tuplespace

Date

May 7, 2019

Participants

  • @Kelly Foster

  • @Łukasz Gołębiewski

  • @Lucius Meredith

  • @Timm Schäuble

  • @Ovidiu Deac

  • @Dominik Zajkowski

  • @Artur Gajowy

Goals

We continue the conversation about this performance and platform usability issue. We discuss options and document our action plan.

Discussion topics

Item

Notes

Item

Notes

Resources

Discussion about Dom’s findings

  • Stop storing sequences. Start storing pieces of sequences (ex hashes)

  • If we don’t address the problem of list growth now, we will have to at some point.



What could we do?

  • Issue in the storage format. Recommendation to fix the AST

    • Serialization

    • How RSpace is built to…

  • First address how we represent the things we store

    • Should be provided on the Rholang side

      • Incoder and decoder

  • Optimize waiting continuations

Discussion about garbage collection

  • Renovated RSpace can manage the hash change

  • What’s the use case for garbage collection?

    • To support new nodes catching up

  • What is garbage?

    • Data that is old (ex on the other side of finalization) and/or inaccessible

    • DECISION run garbage collection + defined grace period

  • Three types of garbage to consider

    • Orphaned blocks

    • Unmatched names transferred from hot store to history trie

    • Names that are no longer referenceable after finalization

      • Requires tooling to retrospect Rholang and ask Casper about finalization

Next steps

  • Fix the example contracts so they don’t use single channels (ex ListMap)

  • To support further investigation, measure the size of data being moved between layers

  • Implement a binary encoder and decoder off of the binary scodec

  • Discuss if Casper can share information about orphaned

  • Define heuristic for when to collect garbage

    •  

  • Define a heuristic for finding out what’s unreferencable: reverse mark and sweep

Action items

@Artur Gajowy ticket switching to recursion

Decisions