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

crdt that use itc? #4

Open
benoitc opened this issue Mar 30, 2017 · 3 comments
Open

crdt that use itc? #4

benoitc opened this issue Mar 30, 2017 · 3 comments

Comments

@benoitc
Copy link

benoitc commented Mar 30, 2017

are you aware of any crdt that has been tested with itc?

@ricardobcl
Copy link
Owner

No, I don't think ITC used with any current CRDT design.
Not really sure if it's suitable for CRDT's, but to better answer that, more research would be necessary on this topic.

@benoitc
Copy link
Author

benoitc commented Dec 12, 2017

i missed to answer. i’m thinking it should be possible to have at least a convergent algo until you keep enough siblings but still thinkg loudly

@ricardobcl
Copy link
Owner

Thinking out loud: the thing with ITC is that it's easy to fork, but how do you do reclaim (i.e., join()) part of the ID space when the other node dies or doesn't respond? You could have a timeout upon which you assume that the other node is dead and you reclaim that ID space. But what if the other node was not dead and does the same thing and comes back online. Then both share ID space and may have incremented the same space. This is undefined behaviour and probably will result in some error/data loss.

In practice, and depending on your system, you could probably be "OK" with assuming that a node is dead after X amount of time, but it's a hack more that anything, similar to when Riak removed entries in the Version Vector if bigger than 10(?) entries.

I'm not saying that there isn't potential for CRDTs here, but someone has to research it more thoroughly.

On the topic of reclaiming causal metadata or minimizing it's usage over time, there's also the research I did on Node-wide Dot-based Clocks implemented in DottedDB. (PS: I still have to update the readme and some other things on that project.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants