Incorrect CRDT Merge direction #1066
Labels
area/crdt
Related to the (Merkle) CRDT system
priority/high
refactor
This issue specific to or requires *notable* refactoring of existing codebases and components
Milestone
At the moment we merge CRDT delta state starting from the
HEAD
and working backwards through the DAG, "merging" along the way. This is technically wrong, as it merges state backward to how its created.However, the database still works because the primary CRDT type we use is the
LWWRegister
. Registers technically only care about the "last" value that is written, so if I set "name" to "Alice" then to "Bob", in reality, the in between state of "Alice" doesn't really matter that much.However, the discussions related to #1064 its clear that this will breakdown for other CRDT types. Specifically this will already break down for
Composite
CRDTs, where the current operations are onlyCREATE
, andUPDATE
effectively. But we want to introduce a new operationDELETE
, which is order dependent in which direction we "merge".This will be necessary for #101 as well, since they'll likely be order dependant types.
The text was updated successfully, but these errors were encountered: