-*more likely* than epaxos to use fast path w/ concurrent non-commuting ops (epaxos can sometimes do this as well, if majority replicas agree on dependencies)
-can *sometimes* use the fast path w/ concurrent non-commuting ops
-*always* fast path for *f=1*, fast path minimal majority
-*always* fast path for *f=1*, fast path minimal majority
- faster non-fault-tolerant reads "when the conflict relation between commands is transitive".
- faster non-fault-tolerant reads "when the conflict relation between commands is transitive".
...
@@ -23,11 +23,16 @@ For example, we can recover *D* at *f=2* after just fast path even w/ two failur
...
@@ -23,11 +23,16 @@ For example, we can recover *D* at *f=2* after just fast path even w/ two failur
1. The other failure must be the coordinator, as no need to recover if coordinator doesn't go down. The coordinator appends any deps it knows initially to messages in the collect phase. Therefore, if the coordinator was one of the *f* that reported a specific dependency, the other particplants of the collect phase will know about it. This takes us to *f-2*.
1. The other failure must be the coordinator, as no need to recover if coordinator doesn't go down. The coordinator appends any deps it knows initially to messages in the collect phase. Therefore, if the coordinator was one of the *f* that reported a specific dependency, the other particplants of the collect phase will know about it. This takes us to *f-2*.
## Examples


How to distinguish 2a from this if (1) and (4) die?