Pretend synchrony: synchronous verification of asynchronous distributed programs

  • v. Gleissenthall K
  • Kıcı R
  • Bakst A
  • et al.
N/ACitations
Citations of this article
12Readers
Mendeley users who have this article in their library.

Abstract

We present pretend synchrony , a new approach to verifying distributed systems, based on the observation that while distributed programs must execute asynchronously, we can often soundly treat them as if they were synchronous when verifying their correctness. To do so, we compute a synchronization , a semantically equivalent program where all sends, receives, and message buffers, have been replaced by simple assignments, yielding a program that can be verified using Floyd-Hoare style Verification Conditions and SMT. We implement our approach as a framework for writing verified distributed programs in Go and evaluate it with four challenging case studies— the classic two-phase commit protocol, the Raft leader election protocol, single-decree Paxos protocol, and a Multi-Paxos based distributed key-value store. We find that pretend synchrony allows us to develop performant systems while making verification of functional correctness simpler by reducing manually specified invariants by a factor of 6, and faster , by reducing checking time by three orders of magnitude.

Cite

CITATION STYLE

APA

v. Gleissenthall, K., Kıcı, R. G., Bakst, A., Stefan, D., & Jhala, R. (2019). Pretend synchrony: synchronous verification of asynchronous distributed programs. Proceedings of the ACM on Programming Languages, 3(POPL), 1–30. https://doi.org/10.1145/3290372

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free