Updating particular version of CRDT

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Updating particular version of CRDT

Andrey Ershov
Hi all,

I'm new to Riak and trying to figure out how to work with CRDTs properly. First of all, I decided to try MVRegister support. I'm using this tutorial http://docs.basho.com/riak/kv/2.2.0/developing/data-types/maps/. Language of my choice is Java.


I've created ahmedMap with two registers (name="Ahmed", phone="123")
Now I would like to simulate that there are two concurrent updates to phone register
phone="456" and phone="789"

For that, I'm fetching initial record and get context from it. After that, I'm performing two updates passing the same context to each one. 
I'm expecting that after fetching the record and reading the phone register, I should find two concurrent values in it: phone = ("456", "789"). But I get only the latest value phone = "789".
Also Register API seems confusing, because there is no method inside it that may return multiple values. 


Could you please help me?

--
Thanks, 
Andrey

_______________________________________________
riak-users mailing list
[hidden email]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Updating particular version of CRDT

Russell Brown-4
Hi Andrey,
The register inside a map is a LWW-register.

Long story: When we added CRDTs to Riak we did it for those users who wanted to avoid writing custom sibling resolution code, following on from that decision we decided not to add the MVRegister type. Riak’s default object is an MVRegister after all. When I say “we” I mean the CRDT team as was then, not Basho, as I am no longer at Basho.

Cheers

Russell

On 21 Feb 2017, at 08:35, Andrey Ershov <[hidden email]> wrote:

> Hi all,
>
> I'm new to Riak and trying to figure out how to work with CRDTs properly. First of all, I decided to try MVRegister support. I'm using this tutorial http://docs.basho.com/riak/kv/2.2.0/developing/data-types/maps/. Language of my choice is Java.
>
> Find source code here: https://gist.github.com/andrershov/d0ebb8fd111eca013b302f8abaf14445
>
> I've created ahmedMap with two registers (name="Ahmed", phone="123")
> Now I would like to simulate that there are two concurrent updates to phone register
> phone="456" and phone="789"
>
> For that, I'm fetching initial record and get context from it. After that, I'm performing two updates passing the same context to each one.
> I'm expecting that after fetching the record and reading the phone register, I should find two concurrent values in it: phone = ("456", "789"). But I get only the latest value phone = "789".
> Also Register API seems confusing, because there is no method inside it that may return multiple values.
>
>
> Could you please help me?
>
> --
> Thanks,
> Andrey
> _______________________________________________
> riak-users mailing list
> [hidden email]
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


_______________________________________________
riak-users mailing list
[hidden email]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
Loading...