IsoPredict: Dynamic Predictive Analysis for Detecting Unserializable Behaviors in Weakly Isolated Data Store Applications

Chujun Geng,Spyros Blanas,Michael D. Bond,Yang Wang
DOI: https://doi.org/10.1145/3656391
2024-04-06
Abstract:This paper presents the first dynamic predictive analysis for data store applications under weak isolation levels, called Isopredict. Given an observed serializable execution of a data store application, Isopredict generates and solves SMT constraints to find an unserializable execution that is a feasible execution of the application. Isopredict introduces novel techniques that handle divergent application behavior; solve mutually recursive sets of constraints; and balance coverage, precision, and performance. An evaluation on four transactional data store benchmarks shows that Isopredict often predicts unserializable behaviors, 99% of which are feasible.
Programming Languages,Databases
What problem does this paper attempt to address?
### What problem does this paper attempt to solve? This paper aims to address the issue of detecting non-serializable behaviors in distributed data storage systems under weak isolation levels. Specifically: 1. **Background and Motivation**: - Distributed data storage systems often support weak isolation levels (such as causal consistency or read committed, rc). While these levels improve efficiency, they can also lead to non-serializable execution behaviors. - Non-serializable execution behaviors are difficult for programmers to understand and often result in errors and failures in real systems. 2. **Main Contributions**: - Introduced **IsoPredict**, the first dynamic predictive analysis method for detecting non-serializable behaviors in data storage applications under weak isolation levels. - Given an observed serializable execution, IsoPredict generates and solves SMT constraints to find a possible non-serializable execution. - By evaluating four transactional data storage benchmarks, results show that IsoPredict can effectively predict non-serializable behaviors, with over 99% of the predictions being validated as feasible executions. 3. **Technical Details**: - **Dynamic Predictive Analysis**: Analyzes observed program executions and detects alternative feasible non-serializable executions. - **SMT Constraint Generation**: Encodes execution feasibility, non-serializability, and weak isolation levels into SMT constraints and uses off-the-shelf SMT solvers to solve them. - **Validation Mechanism**: Optionally verifies whether the predicted non-serializable execution is a feasible execution. Through these methods, the paper aims to help developers better understand and handle the issue of non-serializable behaviors under weak isolation levels.