CA1: If process 0 is nonfaulty, then each nonfaulty process terminates with vi = x.
CA2: If process 0 is faulty, then there is a constant c in {0, 1} such that for each nonfaulty process i, vi = c or vi = ø.
Consider a set of
n
processes in a fail-stop system, where each process knows the names of
the other processes. Each process also has a portion of stable storage
that implements an atomic write operation and whose contents is preserved
across crashes. For example, suppose process p writes the value
v
to stable storage and at a later point writes the value
v'. If p
crashes after the write operation of v' completes, then after p
recovers it will find the value v' in stable storage. But, if p
crashes during the write operation of v', then upon recovery
p will find either v or v' in stable storage. That
is, a crash an an inopportune time won't cause the value on stable storage
to become some value other than v or v'.
The processes are involved in some computation during which all of the processes eventually crash. We will say that process i failed before process j if process j detects process i's failure. Thus, the condition failed before defines an irreflexive partial order. A process i is one of the last processes to fail if it maximal in this order; that is, no process detects i's failure.
Assume that the processes
start recovering after all of them have failed. The order in which they
recover is not constrained.