The paper says:
1.A proposer chooses a new proposal number n and sends a request to each member of some set of acceptors, asking it to respond with:
(a) A promise never again to accept a proposal numbered less than n, and
(b) The proposal with the highest number less than n that it has accepted, if any.
I will call such a request a prepare request with number n.
2.If the proposer receives the requested responses from a majority of the acceptors, then it can issue > a proposal with number n and value v, where v is the value of the highest-numbered proposal among the responses, or is any value selected by the proposer if the responders reported no proposals.
My question is, if proposer selects v among the responses, then new rounds will always uses a previously saved value, how can we update a value?
say we have:
v=1
among all nodes. then a client wants to update it with
v=2
Every prepare phase will collect responses with v=1
, and then propose with v=1
, so v=2
will never be used!
Many implementations response with v=2
on that node receiving client's request, so v=2
gets proposed. But this kind of implementation violates the rule
(b)The proposal with the highest number less than n that it has accepted, if any.
Because v=2
has never been accepted! I can't be the proposal replied.