DottedLattice
The delta CRDT paper introduces a lot of individual abstractions that all do a lot of cool stuff, but often not separated into their pieces. This is one of those pieces systematically handling removals based on metadata.
The context encodes dots that have been seen. The store of type A is assumed to be something that stores individual information per dot. We represent removals as context that contains a dot, but a store that no longer contains the dot. Thus, when merging the abstract logic is somewhat along the lines of: Both contain the (dot, value) pair? => merge value recursively. Only one contains the dot in the context? => keep that value. Both contain the dot, but at least one has no matching value? => remove all values for that dot.
Separating into a mergePartial allows extracting the context into the outermost layer reducing metadata overhead.
Attributes
- Graph
- Supertypes
- Known subtypes
- object dottedLattice.typetrait DottedDecompose[A]class FromConlattice[A]class ProductDottedDecompose[T]