Towards verifying eventually consistent applications

Modern cloud and distributed systems depend heavily on replication of large-scale databases to guarantee properties like high availability, scalability and fault tolerance. These replicas are maintained in geographically distant locations to be able to serve clients from different regions without any loss of performance. Ideally, these systems require to achieve immediate availability while preserving strong consistency in the presence of network partitions. But unfortunately, the CAP theorem [1] proves that it is impossible to have all these properties together in a distributed system. For this reason, architects of current distributed systems frequently omit strong consistency guarantees in favor of weaker forms of consistency, commonly called eventual consistency[2].

[1]  Pravesh Kothari,et al.  A randomized scheduler with probabilistic guarantees of finding bugs , 2010, ASPLOS XV.

[2]  K. Rustan M. Leino,et al.  The Spec# Programming System: An Overview , 2004, CASSIS.

[3]  Irene Greif,et al.  Replicated document management in a group communication system , 1988, CSCW '88.

[4]  Joseph M. Hellerstein,et al.  Consistency Analysis in Bloom: a CALM and Collected Approach , 2011, CIDR.

[5]  Shaz Qadeer,et al.  CHESS: A Systematic Testing Tool for Concurrent Software , 2007 .

[6]  David Maier,et al.  Logic and lattices for distributed programming , 2012, SoCC '12.

[7]  Eric A. Brewer,et al.  Towards robust distributed systems (abstract) , 2000, PODC '00.

[8]  Marc Shapiro,et al.  Conflict-Free Replicated Data Types , 2011, SSS.

[9]  Michael J. Freedman,et al.  Don't settle for eventual: scalable causal consistency for wide-area storage with COPS , 2011, SOSP.

[10]  Wolfram Schulte,et al.  VCC: Contract-based modular verification of concurrent C , 2009, 2009 31st International Conference on Software Engineering - Companion Volume.

[11]  Manuel Fähndrich Static Verification for Code Contracts , 2010, SAS.

[12]  Mark Lillibridge,et al.  Extended static checking for Java , 2002, PLDI '02.

[13]  Sebastian Burckhardt,et al.  Cloud Types for Eventual Consistency , 2012, ECOOP.

[14]  Werner Vogels,et al.  Dynamo: amazon's highly available key-value store , 2007, SOSP.

[15]  Bor-Yuh Evan Chang,et al.  Boogie: A Modular Reusable Verifier for Object-Oriented Programs , 2005, FMCO.

[16]  Serdar Tasiran,et al.  Verifying Programs under Snapshot Isolation and Similar Relaxed Consistency Models , 2014 .

[17]  Leslie Lamport,et al.  TLA in Pictures , 1995, IEEE Trans. Software Eng..

[18]  Leslie Lamport The +CAL Algorithm Language , 2006, NCA.

[19]  Marvin Theimer,et al.  Managing update conflicts in Bayou, a weakly connected replicated storage system , 1995, SOSP.

[20]  Sebastian Burckhardt,et al.  Understanding Eventual Consistency , 2013 .

[21]  Patrice Godefroid,et al.  Model checking for programming languages using VeriSoft , 1997, POPL '97.