Affiliation:
1. Inria, France / Informal Systems, France
2. University of Paris, France / IRIF, France / CNRS, France
3. MPI-SWS, Germany
4. University of Pennsylvania, USA
Abstract
Large scale production distributed systems are difficult to design and test. Correctness must be ensured when processes run asynchronously, at arbitrary rates relative to each other, and in the presence of failures, e.g., process crashes or message losses. These conditions create a huge space of executions that is difficult to explore in a principled way. Current testing techniques focus on systematic or randomized exploration of all executions of an implementation while treating the implemented algorithms as black boxes. On the other hand, proofs of correctness of many of the underlying algorithms often exploit semantic properties that reduce reasoning about correctness to a subset of behaviors. For example, the
communication-closure
property, used in many proofs of distributed consensus algorithms, shows that every asynchronous execution of the algorithm is equivalent to a
lossy synchronous
execution, thus reducing the burden of proof to only that subset. In a lossy synchronous execution, processes execute in lock-step rounds, and messages are either received in the same round or lost forever—such executions form a small subset of all asynchronous ones.
We formulate the
communication-closure hypothesis
, which states that bugs in implementations of distributed consensus algorithms will already manifest in lossy synchronous executions and present a testing algorithm based on this hypothesis. We prioritize the search space based on a bound on the number of failures in the execution and the rate at which these failures are recovered. We show that a random testing algorithm based on sampling lossy synchronous executions can empirically find a number of bugs—including previously unknown ones—in production distributed systems such as Zookeeper, Cassandra, and Ratis, and also produce more understandable bug traces.
Funder
European Research Council
Agence Nationale de la Recherche
Deutsche Forschungsgemeinschaft
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
7 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. A Domain Specific Language for Testing Distributed Protocol Implementations;Lecture Notes in Computer Science;2024
2. Greybox Fuzzing of Distributed Systems;Proceedings of the 2023 ACM SIGSAC Conference on Computer and Communications Security;2023-11-15
3. Liveness Checking of the HotStuff Protocol Family;2023 IEEE 28th Pacific Rim International Symposium on Dependable Computing (PRDC);2023-10-24
4. Evolutionary Approach for Concurrency Testing of Ripple Blockchain Consensus Algorithm;2023 IEEE/ACM 45th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP);2023-05
5. Randomized Testing of Byzantine Fault Tolerant Algorithms;Proceedings of the ACM on Programming Languages;2023-04-06