Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge CRDTs inside riak_object merge #758

Merged
merged 1 commit into from
Dec 13, 2013

Conversation

russelldb
Copy link
Member

Why? Well it means no CRDT siblings on disk. Previously CRDTs
were merged only when a CRDT Operation was performed from the CRDT
API endpoints. This means read repair, AAE, and repl, could all cause
siblings on disk.

With the addition of DVV style causality, we need to make a choice
about CRDTs. We don't have DVVSets and the anonymous list. So CRDTs
either have to merge Dots into a mini-version-vector, or not have dots.

If CRDTs don't have dots, so their values always survive a merge,
then they are subject to repl induced sibling-explosion (possibly)

Merging in riak_object:merge solves that issue.
As an added benefit it also means that Yokozuna indexing of CRDTs
will just work.

I'd really appreciate a performance comparision between this and
the plain DVV branch, and the pre-DVV stuff for 2.0.

Why? Well it means no CRDT siblings on disk. Previously CRDTs
were merged only when a CRDT Operation was performed from the CRDT
API endpoints. This means read repair, AAE, and repl, could all cause
siblings on disk.

With the addition of DVV style causality, we need to make a choice
about CRDTs. We don't have DVVSets and the anonymous list. So CRDTs
either have to merge Dots into a mini-version-vector, or not have dots.

If CRDTs don't have dots, so their values always survive a merge,
then they are subject to repl induced sibling-explosion (possibly)

Merging in riak_object:merge solves that issue.
As an added benefit it also means that Yokozuna indexing of CRDTs
will just work.

I'd really appreciate a performance comparision between this and
the plain DVV branch, and the pre-DVV stuff for 2.0.
@russelldb
Copy link
Member Author

Decided to merge this to the branch and have both as a single PR for DVV in Riak

russelldb added a commit that referenced this pull request Dec 13, 2013
@russelldb russelldb merged commit f00aac8 into bug/rdb/sibling-explosion Dec 13, 2013
@rzezeski rzezeski modified the milestones: 2.0-beta, 2.0 Mar 25, 2014
@seancribbs seancribbs deleted the bug/rdb/sibling-explosion-crdt branch April 1, 2015 23:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants