In Paxos, what prevents multiple values from being chosen? Say we have two proposers (P1, P2), one acceptor (A), and two learners (L1, L2).

What would prevent this sequence of events from occurring?


P1 initiates a round numbered 1. A agrees to participate, and reports that is has not voted on any proposals.
P2 initiates a round numbered 2. A agrees to participate, and reports that is has not voted on any proposals.
P1 asks A to vote for some value v1 in round 1.
A accepts v1 and tries to notify learners. L1 receives the message and declares that v1 is chosen.
P2 asks A to vote for some value v2 in round 2.
A accepts v2 and tries to notify learners. L2 receives the message and declares that v2 is chosen.
I'll assume this is Basic Paxos. Step (4) cannot occur - the acceptor A maintains in nonvolatile memory the largest promise it has made (the highest round it has agreed to vote on). At step (2), the max promise becomes 2. When A recieves P1's accept request in step (3) it will reject it because the accept request is from round 1 (this information is communicated in the accept request).