But Raft assumes "a majority is operational"
But Raft has made such an assumption "a majority is operational", it means it only guarantee safety under its assumption and is not obliged to make extra promise when the assumption is violated.
I am a bit confused with "Raft guarantees consistency even if nodes are tardy in persisting their logs. But it doesn't guarantee durability in that case."Could you clarify more about "guarantee consistency but not durablity"?As a client, if I submit the request, the raft replicas take very long time to write to disk. Before replying to me, suddently there is power failure, and when they are all restarted, they foget my request. In this case, I think it does not violate durability or consistency, because the leader does not reply committed to me.So can you give a more concrete example "guarantee consistency but not durability"?
Consistency: if a client completes an operation, its result returned to an application remains consistent after server crash recoveries.
--
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.
To view this discussion on the web visit https://groups.google.com/d/msgid/raft-dev/914adc56-2e4f-4ce1-8347-b6fe4161cad7n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/raft-dev/d25d0c18-4d44-4bf6-abe8-e60cf93ff01bn%40googlegroups.com.
As for the definition of consistency, you are saying "a consistent evolution of the log"But when I checked another paper in John's group, https://www.usenix.org/system/files/nsdi19-park.pdf [See Appendix A]
Consistency: if a client completes an operation, its result returned to an application remains consistent after server crash recoveries.
If we follow this definition, then consistency means "the consistency of the result before/after crash".In this way, I feel durability becomes a necessary condition of consistency. For example, if "x=0" initially, then a request "Write x=1" is committed and viewed by the world. Then it is lost during failure (no durability), then I will see an inconsistent result x=0.If we follow this definition, then if durability is not guaranteed, then consistency can neither be guaranteed.