Distributed applications often deal with data with different consistency requirements: while a post in a social network only requires weak consistency, the user balance in turn has strong correctness requirements, demanding mutations to be synchronised. To deal efficiently with sequences of operations on different replicas of the distributed application, it is useful to know which operations commute with others and thus, when can an operation not requiring synchronisation be anticipated wrt other requiring it, thus avoiding unnecessary waits.Herein we present a language-based static analysis to extract information at compile-time on which operations can commute with which other operations and thus get information that can be used by the run-time support to decide on call anticipations of operations in replicas without compromising consistency. We illustrate the formal analysis on several paradigmatic examples and briefly present a proof-of-concept implementation in Java.
|Proceedings of the ACM Symposium on Applied Computing
|Association for Computing Machinery
|38th Annual ACM Symposium on Applied Computing, SAC 2023
|27/03/23 → 31/03/23
- language-based static analysis
- method commutation
- replicated data consistency in distributed systems