Uniform Actions in Asynchronous Distributed Systems
We develop necessary conditions for the development of asynchronous distributed software that will perform {\em uniform} actions (events that if performed by any process, must be performed at all processes). The paper focuses on {\em dynamic uniformity}, which differs from the classical problems in that processes continually leave and join the ongoing computation. Here, we first treat a static version of the problem (lacking joins), and then extend the results so obtained to also include joins. Our results demonstrate that in contrast to Consensus, which cannot be solved in asynchronous systems with even a single faulty process, dynamic uniformity can be solved using a failure detection mechanism that makes bounded numbers of mistakes. Because dynamic uniformity arises in systems that maintain safety within a "primary partition" of a network, our paper provides a rigorous characterization of the framework upon which several existing distributed programming environments are based.