Sebastian Burckhardt, Daan Leijen, and Manuel Fahndrich
In the age of cloud-connected mobile devices, users want responsive apps that read and write shared data everywhere, at all times, even if network connections are slow or unavailable. Cloud types have been proposed as a solution that lets programmers declare, read, and update shared structured data while hiding tricky consistency issues related to update propagation and conflict resolution. However, previous work on cloud types does not satisfactorily address (1) how to best understand the weak consistency model, (2) where consistency pitfalls continue to lurk, and (3) how to implement the system efficiently and reliably.
We address these questions by (1) introducing the GLUT model (global log of update transactions), suitable as a mental reference model that helps programmers to visualize executions and reason about correctness, (2) describing typical consistency pitfalls (anti-patterns) and how to avoid them using cloud types, and (3) an efficient client-server implementation of GLUT that uses robust streaming and optimal delta reduction.