This preview shows page 1. Sign up to view the full content.
Unformatted text preview: lures, but we’ll see how to generalize this to handle failures with paxos. Sometimes we only need to avoid causality anomalies, without a total order. E.g., if an observer sees things that depend on things I’ve done, then they should also see the things I’ve done. That’s all that’s needed for the lunch example – that no message that depends on a past event is delivered before that event. A way of implementing this: vector clocks. Vector clock: what is latest event I have seen from each process? VC[i] is the latest event at process i Pass vector clock in each message, and update local clock on message receipt (same as before, only element by element max). On current process j, VC[j]+1 (for the local event of receiving the message) For all i, VC[i] = max (VC[i], msg-‐VC[i]) VC defines a partial order for events, but can be used to enforce constraint that you don’t process an event until you’ve seen all prior events from each process. The set of reachable VC values are con...
View Full Document
- Spring '14