These are chat archives for atomix/atomix

8th
Nov 2017
Jordan Halterman
@kuujo
Nov 08 2017 00:40
Gotcha... sure they can be interleaved. Everything in Atomix below the high level blocking primitives is asynchronous. And often since some primitives are backed by multiple Raft partitions, their execution is totally concurrent. Order is only enforced within cluster communication and within a single Raft partition, but multiple operations can be in progress at any given time. One can call put foo a put foo b put foo c on a ConsistentMap and then block on all the futures at once. All those operations will be in flight at the same time, but there are some restrictions for consistency. Assuming all those put calls were done on the same thread, Atomix guarantees that from the perspective of any client they will occur within the cluster in program order. In other words, no client will ever read c and then a, but a b and c will all be replicated at the same time and most likely be committed in Raft as a single batch of operations.