These are chat archives for atomix/atomix

Apr 2018
Johno Crawford
Apr 02 2018 00:05
Pushed latest changes but need to sleep
Jordan Halterman
Apr 02 2018 00:59
Oh cool let’s do it
Apr 02 2018 15:04
@kuujo is there a way to define, how a conflict should be resolved for distributed maps,
e.g. 2 concurrent transaction updating the same key, t1,t2 forks rec1-v1 , t1 update to rec1-v2 and t2 update rec1-v2,
can these 2 records be merged to rec1-v3.
@kuujo , Q2) also does distributed map support write-behind functionality
Jordan Halterman
Apr 02 2018 16:54
Good questions
Jordan Halterman
Apr 02 2018 17:16

There is no conflict resolution for ConsistentMaps. The two protocols supported for ConsistentMap are leader-based (Raft and primary-backup) and writes are serialized, so there is no case where writes from two clients are seen in one order on one node and another order on another node or occur at the “same” time, thus there’s no conflict and no conflict resolution strategy. Keys are mapped to partitions and partitions are serialized, and a global total ordering of changes is assumed so the last write to a partition always wins.

Concurrency then is generally managed using optimistic (or pessimistic) locking:

ConsistentMap<String, String> map = atomix.consistentMapBuilder(“foo”);
Versioned<String> value = map.get(“bar”);
if (map.put(“bar”, “baz”, value.version())) {
  // success!
And we have never had a use case for a Write-behind primitive, but it wouldn’t be hard to implement
Jordan Halterman
Apr 02 2018 17:22
In other news, I expect to be sending a lot of changes over the next couple weeks. I expect all the code and testing to be finished pretty quickly, and we’ll be using Atomix 2.1 in ONOS very soon.
I’m also going to begin updating the website for Atomix 2.x
Apr 02 2018 18:48
@kuujo I can't find documentation for last stable release (2.0.19). Site contains docs for 1.0.0-rc9, github repo readme contains docs for 2.1.
Jon Hall
Apr 02 2018 20:41
They are not yet updated with all the changes made for 2.x. I think this would be part of @kuujo’s last message about updating the website
Jordan Halterman
Apr 02 2018 23:26
@mkulak the latest stable release only contains the Raft implementation and messaging. master contains all the new Atomix 2.x features. The only documentation for 2.x is currently in the README. I’ll probably begin updating the site some time this week.
If you do want to use the stable Raft implementation, check out RaftTest
If you want to use Atomix 2.1 with primitives and everything, I’d suggest pulling master and using the README. I think the last beta is a little far behind now. We’ll probably do another one at the end of the week and an RC in a few weeks.

The only things missing from the 2.1 release now are:
• File-based configurations (YAML)
• IP ranges for node discovery
• Various minor bug fixes

The last beta should be pretty close to the final API, and then the RC will be feature complete.