Skip to content

11.10

Multi-worker Rabia

Definition

Each worker is a separate process. Each worker is associated with a round number. A worker is started with a round number and a value to propose. The worker is closed after it commits a value.

Number of workers : the maximum number of on-going workers at the same time.

Single-worker mode: if there is any on-going worker, then no new worker can be started.

Multi-worker mode: if the number of on-going workers is less than , then a new worker can be started.

On both modes, a new worker starts with the smallest value in the priority queue.

The fix

If a worker with round number commits a , then the server is set to single-worker mode, until a non- value is committed at some future round (round number greater than ).

Proof of liveness

We prove that, after all requests are delivered to the servers, if there is still an uncommitted value, then for the following consecutive rounds, at least one new value is committed. We prove this by showing that, if the following consecutive rounds are all committed with , then a new value must be committed at round .

Let be the smallest value at is not committed at rounds . (If all the servers operate in single-worker mode, then should be the value proposed by every server at round .) We prove that is committed at round .

For any server, when it starts a worker for round , it must be in the single-worker mode. Consider the other on-going workers of that server at that time. The number of on-going workers is less than and each worker is associated with a round number smaller than . So there must be a round number such that the worker with round number is already committed. So the server was set to single-worker mode when it knew the result of round . The server also have no chance to exit single-worker mode, since all the rounds after and before are committed with .

Since the server is in single-worker mode, it must propose the smallest value in the priority queue, which is . This is true for all servers, so is committed at round .