[FrontPage] [TitleIndex] [WordIndex

Note: You are looking at a static copy of the former PineWiki site, used for class notes by James Aspnes from 2003 to 2012. Many mathematical formulas are broken, and there are likely to be other bugs as well. These will most likely not be fixed. You may be able to find more up-to-date versions of some of these notes at http://www.cs.yale.edu/homes/aspnes/#classes.

1. A new consensus protocol

Consider the following protocol for binary RandomizedConsensus using shared memory.

The shared data consists of 2n+1 registers a[1..2n+1], all initially set to ⊥.

Each process executes the following code:

preference ← input
while true do:
    read all 2n+1 registers
    if all registers have the same value v and v≠⊥:
        decide v
    if at least n+1 of the registers have the same value v and v≠⊥:
        preference ← v
    choose r uniformly at random and set a[r] ← preference

Does this algorithm solve consensus? Why or why not?

2. Version control with quorums

The day after its Subversion server catches fire, a large software company decides to implement a new version control system with replicated data stores. Using this system, a user should be able to check out (read) a document and check in (write) an update if and only if no other updates have been checked in (by anybody) since the user's last checkout. They would like to implement this system in an asynchronous message-passing system with five servers, with the guarantee that the system will continue to work as long as no more than two of the servers fail (by crashing).

Describe a mechanism for implementing this system, or show that it can't be done without additional assumptions.

3. Paxos with failure detectors

Suppose we run the basic Paxos algorithm with a failure detector, with the rule that any acceptor will reject (responding with nack and not otherwise updating their state) all messages from a proposer unless the proposer has the smallest id among all proposers that the acceptor doesn't currently suspect. Suppose also that we modify the proposer's code so that it aborts a round and tries again with a higher round number if it receives nack from or suspects a majority of acceptors. Assuming some proposer and a majority of acceptors never crash, with which of the FailureDetectors <>S, S, <>‹„P, and P will the algorithm always eventually terminate?

2014-06-17 11:58