ABSTRACT
Strong eventual consistency (SEC) has been used as a classic notion of correctness for Conflict-Free Replicated Data Types (CRDTs). However, it does not give proper abstractions of functionality, thus is not helpful for modular verification of client programs using CRDTs. We propose a new correctness formulation for CRDTs, called Abstract Converging Consistency (ACC), to specify both data consistency and functional correctness. ACC gives abstract atomic specifications (as an abstraction) to CRDT operations, and establishes consistency between the concrete execution traces and the execution using the abstract atomic operations. The abstraction allows us to verify the CRDT implementation and its client programs separately, resulting in more modular and elegant proofs than monolithic approaches for whole program verification. We give a generic proof method to verify ACC of CRDT implementations, and a rely-guarantee style program logic to verify client programs. Our Abstraction theorem shows that ACC is equivalent to contextual refinement, linking the verification of CRDT implementations and clients together to derive functional correctness of whole programs.
- Hagit Attiya, Sebastian Burckhardt, Alexey Gotsman, Adam Morrison, Hongseok Yang, and Marek Zawirski. 2016. Specification and Complexity of Collaborative Text Editing. In PODC 2016. 259–268. https://doi.org/10.1145/2933057.2933090 Google ScholarDigital Library
- Ahmed Bouajjani, Constantin Enea, Rachid Guerraoui, and Jad Hamza. 2017. On Verifying Causal Consistency. In POPL 2017. 626–638. https://doi.org/10.1145/3009837.3009888 Google ScholarDigital Library
- Ahmed Bouajjani, Constantin Enea, and Jad Hamza. 2014. Verifying Eventual Consistency of Optimistic Replication Systems. In POPL 2014. 285–296. https://doi.org/10.1145/2535838.2535877 Google ScholarDigital Library
- Lucas Brutschy, Dimitar Dimitrov, Peter Müller, and Martin Vechev. 2017. Serializability for Eventual Consistency: Criterion, Analysis, and Applications. In POPL 2017. 458–472. https://doi.org/10.1145/3009837.3009895 Google ScholarDigital Library
- Sebastian Burckhardt. 2014. Principles of Eventual Consistency. Found. Trends Program. Lang., 1, 1-2 (2014), Oct., 1–150. https://doi.org/10.1561/2500000011 Google ScholarDigital Library
- Sebastian Burckhardt, Alexey Gotsman, Hongseok Yang, and Marek Zawirski. 2014. Replicated Data Types: Specification, Verification, Optimality. In POPL 2014. 271–284. https://doi.org/10.1145/2535838.2535848 Google ScholarDigital Library
- Seth Gilbert and Nancy Lynch. 2002. Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-tolerant Web Services. SIGACT News, 33, 2 (2002), June, 51–59. https://doi.org/10.1145/564585.564601 Google ScholarDigital Library
- Victor B. F. Gomes, Martin Kleppmann, Dominic P. Mulligan, and Alastair R. Beresford. 2017. Verifying strong eventual consistency in distributed systems. PACMPL, 1, OOPSLA (2017), 109:1–109:28. https://doi.org/10.1145/3133933 Google ScholarDigital Library
- Alexey Gotsman, Hongseok Yang, Carla Ferreira, Mahsa Najafzadeh, and Marc Shapiro. 2016. ’Cause I’m Strong Enough: Reasoning About Consistency Choices in Distributed Systems. In POPL 2016. 371–384. https://doi.org/10.1145/2837614.2837625 Google ScholarDigital Library
- Radha Jagadeesan and James Riely. 2018. Eventual Consistency for CRDTs. In ESOP 2018. 968–995. https://doi.org/10.1007/978-3-319-89884-1_34 Google ScholarCross Ref
- Cliff B. Jones. 1983. Tentative Steps Toward a Development Method for Interfering Programs. ACM Trans. Program. Lang. Syst., 5, 4 (1983), 596–619. https://doi.org/10.1145/69575.69577 Google ScholarDigital Library
- Gowtham Kaki, Kapil Earanky, KC Sivaramakrishnan, and Suresh Jagannathan. 2018. Safe Replication through Bounded Concurrency Verification. Proc. ACM Program. Lang., 2, OOPSLA (2018), Article 164, https://doi.org/10.1145/3276534 Google ScholarDigital Library
- Mohsen Lesani, Christian J. Bell, and Adam Chlipala. 2016. Chapar: Certified Causally Consistent Distributed Key-value Stores. In POPL 2016. 357–370. https://doi.org/10.1145/2837614.2837622 Google ScholarDigital Library
- Nicholas V. Lewchenko, Arjun Radhakrishna, Akash Gaonkar, and Pavol Černý. 2019. Sequential Programming for Replicated Data Stores. Proc. ACM Program. Lang., 3, ICFP (2019), Article 106, https://doi.org/10.1145/3341710 Google ScholarDigital Library
- Hongjin Liang and Xinyu Feng. 2021. Abstraction for Conflict-Free Replicated Data Types (Technical Report). https://plax-lab.github.io/publications/crdt/Google Scholar
- Kartik Nagar and Suresh Jagannathan. 2019. Automated Parameterized Verification of CRDTs. In CAV 2019. 459–477. https://doi.org/10.1007/978-3-030-25543-5_26 Google ScholarCross Ref
- Sreeja S. Nair, Gustavo Petri, and Marc Shapiro. 2020. Proving the Safety of Highly-Available Distributed Objects. In ESOP 2020. 544–571. https://doi.org/10.1007/978-3-030-44914-8_20 Google ScholarDigital Library
- Hyun-Gul Roh, Myeongjae Jeon, Jin-Soo Kim, and Joonwon Lee. 2011. Replicated abstract data types: Building blocks for collaborative applications. J. Parallel and Distrib. Comput., 71, 3 (2011), 354 – 368. https://doi.org/10.1016/j.jpdc.2010.12.006 Google ScholarDigital Library
- Ilya Sergey, James R. Wilcox, and Zachary Tatlock. 2017. Programming and Proving with Distributed Protocols. Proc. ACM Program. Lang., 2, POPL (2017), Article 28, https://doi.org/10.1145/3158116 Google ScholarDigital Library
- Marc Shapiro, Nuno Preguiça, Carlos Baquero, and Marek Zawirski. 2011. A comprehensive study of Convergent and Commutative Replicated Data Types. Inria – Centre Paris-Rocquencourt ; INRIA. https://hal.inria.fr/inria-00555588Google Scholar
- Paolo Viotti and Marko Vukolić. 2016. Consistency in Non-Transactional Distributed Storage Systems. ACM Comput. Surv., 49, 1 (2016), June, 19:1–19:34. https://doi.org/10.1145/2926965 Google ScholarDigital Library
- Chao Wang, Constantin Enea, Suha Orhun Mutluergil, and Gustavo Petri. 2019. Replication-aware Linearizability. In PLDI 2019. 980–993. https://doi.org/10.1145/3314221.3314617 Google ScholarDigital Library
- Matthew Weidner, Heather Miller, and Christopher Meiklejohn. 2020. Composing and Decomposing Op-Based CRDTs with Semidirect Products. Proc. ACM Program. Lang., 4, ICFP (2020), Article 94, Aug., https://doi.org/10.1145/3408976 Google ScholarDigital Library
- James R. Wilcox, Doug Woos, Pavel Panchekha, Zachary Tatlock, Xi Wang, Michael D. Ernst, and Thomas Anderson. 2015. Verdi: A Framework for Implementing and Formally Verifying Distributed Systems. In PLDI 2015. 357–368. https://doi.org/10.1145/2737924.2737958 Google ScholarDigital Library
- Peter Zeller, Annette Bieniusa, and Arnd Poetzsch-Heffter. 2014. Formal Specification and Verification of CRDTs. In FORTE 2014. 33–48. https://doi.org/10.1007/978-3-662-43613-4_3 Google ScholarCross Ref
Index Terms
- Abstraction for conflict-free replicated data types
Recommendations
Reversible conflict-free replicated data types
Middleware '22: Proceedings of the 23rd ACM/IFIP International Middleware ConferenceConflict-free replicated data types (CRDTs) are popular for optimistic replication and ensuring strong eventual consistency (SEC) in distributed systems. However, reversibility is an underdeveloped functionality for CRDTs, despite its usefulness in ...
Conflict-free replicated data types
SSS'11: Proceedings of the 13th international conference on Stabilization, safety, and security of distributed systemsReplicating data under Eventual Consistency (EC) allows any replica to accept updates without remote synchronisation. This ensures performance and scalability in large-scale distributed systems (e.g., clouds). However, published EC approaches are ad-hoc ...
Data abstraction and information hiding
This article describes an approach for verifying programs in the presence of data abstraction and information hiding, which are key features of modern programming languages with objects and modules. This article draws on our experience building and ...
Comments