Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7795635
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 1, 20262026-06-01T23:07:35+00:00 2026-06-01T23:07:35+00:00

In Multi-Paxos algorithm, consider this message flow from the viewpoint of an acceptor: receive:

  • 0

In Multi-Paxos algorithm, consider this message flow from the viewpoint of an acceptor:

receive: Prepare(N)

reply: Promise(N, null)

receive: Accept!(N, V1)

reply: Accepted(N, V1)

receive: Accept!(N+1, V2)

reply: ?

What should the acceptor’s reaction be in this case, according to the protocol? Should it reply with Accepted(N+1, V2), or should it ignore the second Accept!?

I believe this case may happen in Multi-Paxos when a second proposer comes online and believes he is (and always was) leader, therefore he sends his Accept without Preparing. Or if his Prepare simply did not reach the acceptor. If this case may not happen, can you explain why?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-01T23:07:37+00:00Added an answer on June 1, 2026 at 11:07 pm

    I disagree with both other answers.

    1. Multi-Paxos does not say that the Leader is the only proposer; this would cause the system to have a single point of failure. Even during network partitions the system may not be able to progress. Multi-Paxos is an optimization allowing a single node (the Leader) to skip some prepare phases. Other nodes, thinking the leader is dead, may attempt to continue the instance on her behalf, but must still use the full Basic-Paxos protocol.

    2. Nacking the accept message violates the Paxos algorithm. An acceptor should accept all values unless it has promised to not accept it. (Ignoring is allowed but not recommended; it’s just because dropped messages are allowed.)

    3. There is also an elegant solution to this. The problem is with the Leader’s round number (N+1 in the question).

    Here are some assumptions:

    • You have a scheme such that round ids are disjoint across all nodes (required by Paxos anyway).
    • You have a way of determining which node is the Leader per Paxos instance (required by Multi-Paxos). The Leader is able to change from one Paxos instance to the next.
      Aside: The Part-time Parliament suggests this is done by the Leader winning a prior Paxos instance (Section 3.1) and points out she can stay Leader as long as she’s alive or the richest (Section 3.3.1). I have an explicit ELECT_NEW_LEADER:<node> value that is proposed via Paxos.
    • The Leader only skips the Prepare phase on the initial round per instance; and uses full Basic Paxos on subsequent rounds.

    With these assumptions, solution is very simple. The Leader merely picks a really low round id for it’s initial Accept phase. This id (which I’ll call it INITIAL_ROUND_ID) can be anything as long as it is lower than all the nodes’ round ids. Depending on your id-choosing scheme, either -1, 0, or Integer.MIN_VALUE will work.

    It works because another node (I’ll call him the Stewart) has to go through the full Paxos protocol to propose anything and his round id is always greater than INITIAL_ROUND_ID. There are two cases to consider: whether or not the Leader’s Accept messages reached any of the nodes the Stewart’s Prepare message did.

    When the Leader’s Accept phase has not reaches any nodes, the Stewart will get back no value in any Promise, and can proceed just like in regular Basic-Paxos.

    And, when the Leader’s Accept phase has reached a node, the Stewart will get back a value in a promise, which it uses to continue the algorithm, just like in Basic-Paxos.

    In either case, because the Stewart’s round id is greater than INITIAL_ROUND_ID, any slow Accept messages a node receives from the Leader will always result in a Nack.

    There is no special logic on either the Acceptor or the Stewart. And minimal special logic on the Leader (Viz. pick a really low INITIAL_ROUND_ID).


    Notice, if we change the OP’s question by one character then the OP’s self answer is correct: Nack.

    • receive: Prepare(N)
    • reply: Promise(N, null)
    • receive: Accept!(N, V1)
    • reply: Accepted(N, V1)
    • receive: Accept!(N-1, V2)
    • reply: Nack(N, V1)

    But as it stands, his answer breaks the Paxos Algorithm; it should be Accept!

    • receive: Prepare(N)
    • reply: Promise(N, null)
    • receive: Accept!(N, V1)
    • reply: Accepted(N, V1)
    • receive: Accept!(N+1, V2)
    • reply: Accept!(N+1, V2)
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I've built a multi-select form (from within form_for) like this: <div class=rounded-block quarter-wide radio-group>
Given multi-tenant application, How are vendors implementing email notifications from an email account setup
I have a multi-table query, similar to this (simplified version) SELECT columns, count(table2.rev_id) As
I am using multi curl to fetch data from remote site. My script is
As multi-processor and multi-core computers become more and more ubiquitous, is simply firing off
Are multi-threaded CLR stored procs possible? I have a data-intensive task with lots of
are multi-level CSS drop-down menus a big 'no-no' for SEO purposes. i've read mixed
Context: multi-user app (node.js) - 1 painter, n clients Canvas size: 650x400 px (=
So multi-select boxes aren't the nicest inputs to work with in the word, but
I have a multi view application with individual UIViewControllers and xibs. I have one

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.