Abstract
To provide high availability in distributed systems, object replicas allow concurrent updates. Although replicas eventually converge, they may diverge temporarily, for instance when the network fails. This makes it difficult for the developer to reason about the object’s properties, and in particular, to prove invariants over its state. For the subclass of state-based distributed systems, we propose a proof methodology for establishing that a given object maintains a given invariant, taking into account any concurrency control. Our approach allows reasoning about individual operations separately. We demonstrate that our rules are sound, and we illustrate their use with some representative examples. We automate the rule using Boogie, an SMT-based tool.
Chapter PDF
Similar content being viewed by others
Keywords
References
Almeida, P.S., Shoker, A., Baquero, C.: Delta state replicated data types. J. Parallel Distrib. Comput. 111, 162–173 (2018), https://doi.org/10.1016/j.jpdc.2017.08.003
Bailis, P., Fekete, A., Franklin, M.J., Ghodsi, A., Hellerstein, J.M., Stoica, I.: Coordination avoidance in database systems. Proc. VLDB Endow. 8(3), 185–196 (Nov 2014), http://dx.doi.org/10.14778/2735508.2735509, int. Conf. on Very Large Data Bases (VLDB) 2015, Waikoloa, Hawai’i, USA
Baquero, C., Almeida, P.S., Cunha, A., Ferreira, C.: Composition in state based replicated data types. Bulletin of the EATCS 123 (2017), http://eatcs.org/beatcs/index.php/beatcs/article/view/507
Baquero, C., Moura, F.: Using structural characteristics for autonomous operation. Operating Systems Review 33(4), 90–96 (1999), https://doi.org/10.1145/334598.334614
Barnett, M., Chang, B.Y.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: A modular reusable verifier for object-oriented programs. In: Proceedings of the 4th International Conference on Formal Methods for Components and Objects. pp. 364–387. FMCO’05, Springer-Verlag, Berlin, Heidelberg (2006), https://doi.org/10.1007/11804192_17
Brookes, S., O’Hearn, P.W.: Concurrent separation logic. SIGLOG News 3(3), 47–65 (2016), https://dl.acm.org/citation.cfm?id=2984457
Burckhardt, S.: Principles of eventual consistency. Foundations and Trends in Programming Languages 1(1-2), 1–150 (2014), https://doi.org/10.1561/2500000011
Burckhardt, S., Gotsman, A., Yang, H., Zawirski, M.: Replicated data types: Specification, verification, optimality. In: Symp. on Principles of Prog. Lang. (POPL). pp. 271–284. San Diego, CA, USA (Jan 2014), https://doi.org/10.1145/2535838.2535848
Dijkstra, E.: A discipline of programming. Prentice-Hall series in automatic computation, Prentice-Hall (1976)
Gomes, V.B.F., Kleppmann, M., Mulligan, D.P., Beresford, A.R.: A framework for establishing strong eventual consistency for conflict-free replicated datatypes. Archive of Formal Proofs 2017 (2017), https://www.isa-afp.org/entries/CRDT.shtml
Gotsman, A., Yang, H., Ferreira, C., Najafzadeh, M., Shapiro, M.: ’Cause I’m Strong Enough: Reasoning about consistency choices in distributed systems. In: Symp. on Principles of Prog. Lang. (POPL). pp. 371–384. St. Petersburg, FL, USA (2016), https://doi.org/10.1145/2837614.2837625
Hellerstein, J.M., Alvaro, P.: Keeping CALM: when distributed consistency is easy. CoRR abs/1901.01930 (2019), http://arxiv.org/abs/1901.01930
Houshmand, F., Lesani, M.: Hamsaz: Replication coordination analysis and synthesis. Proc. ACM Program. Lang. 3(POPL), 74:1–74:32 (Jan 2019), https://doi.org/10.1145/3290387
Jagadeesan, R., Riely, J.: Eventual consistency for crdts. In: Ahmed, A. (ed.) Programming Languages and Systems - 27th European Symposium on Programming, ESOP 2018, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2018, Thessaloniki, Greece, April 14-20, 2018, Proceedings. Lecture Notes in Computer Science, vol. 10801, pp. 968–995. Springer (2018), https://doi.org/10.1007/978-3-319-89884-1_34
Jones, C.B.: Specification and design of (parallel) programs. In: Mason, R. (ed.) Information Processing 83. IFIP Congress Series, vol. 9, pp. 321–332. IFIP, North-Holland/IFIP, Paris, France (Sep 1983)
Kaki, G., Earanky, K., Sivaramakrishnan, K., Jagannathan, S.: Safe replication through bounded concurrency verification. Proc. ACM Program. Lang. 2(OOPSLA), 164:1–164:27 (Oct 2018), https://doi.org/10.1145/3276534
Kaki, G., Nagar, K., Najafzadeh, M., Jagannathan, S.: Alone together: Compositional reasoning and inference for weak isolation. In: Symp. on Principles of Prog. Lang. (POPL). Proc. ACM Program. Lang., vol. 2, pp. 27:1–27:34. Assoc. for Computing Machinery, Assoc. for Computing Machinery, Los Angeles, CA, USA (Dec 2017), https://doi.org/10.1145/3158115
Leino, K.R.M., Monahan, R.: Reasoning about comprehensions with first-order smt solvers. In: Proceedings of the 2009 ACM Symposium on Applied Computing. pp. 615–622. SAC ’09, ACM, New York, NY, USA (2009), https://doi.org/10.1145/1529282.1529411
Marcelino, G., Balegas, V., Ferreira, C.: Bringing hybrid consistency closer to programmers. In: W. on Principles and Practice of Consistency for Distr. Data (PaPoC). pp. 6:1–6:4. PaPoC ’17, Euro. Conf. on Comp. Sys. (EuroSys), ACM, Belgrade, Serbia (2017), https://doi.org/10.1145/3064889.3064896
Nair, S., Shapiro, M.: Improving the “Correct Eventual Consistency” tool. Rapport de recherche RR-9191, Institut National de la Recherche en Informatique et Automatique (Inria), Paris, France (Jul 2018), https://hal.inria.fr/hal-01832888
Nair, S.S., Petri, G., Shapiro, M.: Invariant safety for distributed applications. In: W. on Principles and Practice of Consistency for Distr. Data (PaPoC). pp. 4:1–4:7. Assoc. for Computing Machinery, Assoc. for Computing Machinery, Dresden, Germany (Mar 2019), https://doi.org/10.1145/3301419.3323970
Nair, S.S., Petri, G., Shapiro, M.: Soteria. https://github.com/sreeja/soteria_tool (2019)
Nair, S.S., Petri, G., Shapiro, M.: Proving the safety of highly-available distributed objects (Extended version). Tech. rep. (Feb 2020), https://hal.archives-ouvertes.fr/hal-02492599
Najafzadeh, M., Gotsman, A., Yang, H., Ferreira, C., Shapiro, M.: The CISE tool: Proving weakly-consistent applications correct. In: W. on Principles and Practice of Consistency for Distr. Data (PaPoC). EuroSys 2016 workshops, Assoc. for Computing MachinerySpecial Interest Group on Op. Sys. (SIGOPS), Assoc. for Computing Machinery, London, UK (Apr 2016), https://doi.org/10.1145/2911151.2911160
Shapiro, M., Preguiça, N., Baquero, C., Zawirski, M.: Conflict-free replicated data types. In: Défago, X., Petit, F., Villain, V. (eds.) Int. Symp. on Stabilization, Safety, and Security of Dist. Sys. (SSS). Lecture Notes in Comp. Sc., vol. 6976, pp. 386–400. Springer-Verlag, Grenoble, France (Oct 2011)
Shapiro, M., Saeida Ardekani, M., Petri, G.: Consistency in 3D. In: Desharnais, J., Jagadeesan, R. (eds.) Int. Conf. on Concurrency Theory (CONCUR). Leibniz Int. Proc. in Informatics (LIPICS), vol. 59, pp. 3:1–3:14. Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl Publishing, Germany, Québec, Québec, Canada (Aug 2016), https://doi.org/10.4230/LIPIcs.CONCUR.2016.3
Sivaramakrishnan, K., Kaki, G., Jagannathan, S.: Declarative programming over eventually consistent data stores. In: Assoc. for Computing MachinerySpecial Interest Group on Pg. Lang. (SIGPLAN). pp. 413–424. PLDI ’15, Assoc. for Computing Machinery, Assoc. for Computing Machinery, Portland, OR, USA (2015), https://doi.org/10.1145/2737924.2737981
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Open Access This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made.
The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.
Copyright information
© 2020 The Author(s)
About this paper
Cite this paper
Nair, S.S., Petri, G., Shapiro, M. (2020). Proving the Safety of Highly-Available Distributed Objects. In: Müller, P. (eds) Programming Languages and Systems. ESOP 2020. Lecture Notes in Computer Science(), vol 12075. Springer, Cham. https://doi.org/10.1007/978-3-030-44914-8_20
Download citation
DOI: https://doi.org/10.1007/978-3-030-44914-8_20
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-44913-1
Online ISBN: 978-3-030-44914-8
eBook Packages: Computer ScienceComputer Science (R0)