--
You received this message because you are subscribed to the Google Groups "raft-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to raft-dev+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "raft-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/raft-dev/KCMqVfuhSNw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to raft-dev+u...@googlegroups.com.
The state machine is a (sequential, i.e. non-concurrent) piece of code, written by the application developer.
The current state of the state machine resides in memory on a given replica, and consists of the values of all variables within the state machine code.
Each entry of the Raft log codifies a state machine transition.
When Raft commits a log entry, it invokes the application developer's state machine with the value of the log entry. The state machine then performs some computation based on that value, and ends up in a new state.Now, here's a confusing bit: since the state machine is a sequential piece of code, it doesn't actually need to contain any CAS instructions. The RSM abstraction allow the application developer to not have to worry about any concurrency whatsoever; the state machine code is single-threaded, and Raft always waits for the state machine to halt its computation before it feeds in a new state transition.
Now, the one part I'm confused about: what exactly you mean by "if your only state machine operations are read and write (ie, it's a register)".I think what you mean is: if you tried to implement the state machine code *without* the assumption that each state transition is atomic, would you need to invoke a CAS instruction in order to achieve correctness?
Makes sense, thanks!
--
You received this message because you are subscribed to a topic in the Google Groups "raft-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/raft-dev/KCMqVfuhSNw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to raft-dev+u...@googlegroups.com.
--
Linearizable registers do *not* however support stronger semantics, such as Atomic Compare-And-Swap.So my question is this: are there Raft users who depend on stronger semantics than linearizability? i.e., is anyone using Raft for CAS (or similar) operations?