I'm looking at the paxos family of protocols for solving consensus in a network of unreliable processors. I'm working through scenarios where processors fail, and I know I'm wrong, but I don't know why.
I have 3 machines with the state A.
- One machine goes down.
- The client requests a state change. Paxos works, and machines 2 and 3 have the state B.
- The client requests a state change, prepare and promise phases are completed successfully.
- A second machine goes down
- The proposer sends an Accept Request message
- The machine accepts the new value
At the end each machine has a different value: A, B and C.
I thought that Paxos can never left the system in a inconsistent state, I think that my problem is that I don't understand what Paxos safety properties really are.