0

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.

ideawu
  • 2,287
  • 1
  • 23
  • 28

1 Answers1

2

I think what you're looking for is a way to update V after it has been successfully set to 1. You are correct that once a majority of peers agree that v=1, that Paxos instance is locked with v=1 and it will never change. What you need is another instance of paxos to update v=2. This is commonly referred to as "Multi-Paxos" where there is a linear chain of Paxos instances that are used to update shared state among the nodes. Each instance is discreet and entails a new Paxos round for which no proposals have been made. In your example above, v=1 would be chosen for instance A whereas v=2 could be chosen for instance B.

Rakis
  • 7,779
  • 24
  • 25
  • 1
    This is the right answer, but there's some confusing terminology that's worth pointing out given the context of the question. In Lamport's work (specifically Paxos Made Simple and the longer Part-time Parliament papers) the protocol for each instance is called the Synod protocol, and the chain of instances is called Paxos. In other places each instance is called Paxos and the chain of instances is called Multi-Paxos. – Dave Turner May 03 '20 at 16:42