2018-05-31 Meeting notes: RSpace team meeting




  • Discuss where things are.
  • Discuss what comes next.
  • Cut some placeholder tickets for next Sprint.

Action items

Discussion items

Where we are: History & RollbackHenry
  • Refactored LMDBStore
    • IDEA If we have an InMemory store in place we can push out LMDBStore updates on a separate thread
  • Really minimal version of getCheckpoint
    • Review of https://github.com/rchain/rchain/pull/860
    • To do's on PR
    • Write test
    • Add scaladoc
    • Add comment about assumptions about transactions, locking, and writing to _trieUpdates
    • Add TODO/comment about pruning _trieUpdates.
  • Minimal version of reset hopefully in place by EOD
    • GOAL By end of Sprint 10 be ready to do integration testing of history and rollback implementation. Delivery on July 12
What needs to happen: History & RollbackHenry + Lukasz + Dom
  • Let's talk about the TrieUpdate log
    • Demo of the current implementation of getCheckpoint
    • IDEA - Sort by hash, if matching and the last is a delete, then don't need to put into the Trie
      • Don't want to put log of everything in the Trie
      • TICKET - batch log pruning (Łukasz)
    • There will be logging at two levels: batch and trace
  • Structure of PointerBlock "cells" and minimizing unnecessary db access in deleteLeaf 
    • Issue - when there are two children and you know one, you have to go to the store to find out who the other child is, and the info available in the cell is limited.
      • IDEA
    • Discussion about node child and leaf child
  • Skip blocks
    • Ethereum calls them "extension nodes"
    • TICKET - assign creation of skip block to Łukasz and Dom
  • Transfer 
MDB_NOTLS & Concurrency TestsHenry + Yaraslau
  • Metrics - discussion about Prometheus and costs of calculating averages inside RSpace
    • IDEA there are independent libraries that can push counters to Prometheus
    • DECISION - Let's review how we are doing this and come up with a better way to avoid calculations in RSpace. Goal - RSpace emits metrics
    • TICKET - revise how metrics are emitted and then calculated externally
    • TICKET - calculation of comm events per second for Sprint 10
    • TICKET - investigate reads and writes to LMDB for metrics
  • Discussion of MDB_NOTLS
    • Tickets created and assigned to Yaraslau
    • There must be a locking mechanism at the level of produce and consume
    • IDEA expose memory and write to LMDB
    • Unclear if we can use namespaces. Sharding and namespaces come with RNode v0.6
Execution tracesHenry + Yaraslau
  • Henry and Michael Birch are working together at this point. Will bring Yaraslau in later after metrics and concurrency work in Sprint 10.
What about: inmem implementationDom
  • How much can we afford to keep inMemoryStore?
  • Discussion of hot vs cold storage and how it applies to cost model
    • This may not be a part of Mercury. Rent may be.
    • IDEA - have separate APIs to support transfer from hot to cold or a single API
      • Will need a process
      • Will need to understand costs
      • Will need garbage collection
        • Two types: 1) language level and 2) higher level consensus
  • Henry to review https://github.com/rchain/rchain/pull/861 by EOD
  • Discussion about transaction work Dom is doing
    • Could it be done in Sprint 10?
      • Depends on fancy or simple implementation
      • DECISION simple model of LMDB transactions can be done in Sprint 10
sealed trait Child
case class NodeChild(hash: Blake2b256Hash) extends Child
case class LeafChild(hash: Blake2b256Hash) extends Child
case object Nothing extends Child