R3: Record-Replay-Retroaction for Database-Backed Applications
Qian Li, Peter Kraft, Michael J. Cafarella, Çagatay Demiralp, Goetz Graefe, Christos Kozyrakis, Michael Stonebraker, Lalith Suresh, Xiangyao Yu, Matei Zaharia
Abstract
Developers would benefit greatly from time travel: being able to faithfully replay past executions and retroactively execute modified code on past events. Currently, replay and retroaction are impractical because they require expensively capturing fine-grained timing information to reproduce concurrent accesses to shared state. In this paper, we propose practical time travel for database-backed applications , an important class of distributed applications that access shared state through transactions.
We present R 3 , a novel Record-Replay-Retroaction tool. R 3 implements a lightweight interceptor to record concurrency information for applications at transaction-level granularity, enabling replay and retroaction with minimal overhead. We address key challenges in both replay and retroaction. First, we design a novel algorithm for faithfully reproducing application requests running with snapshot isolation, allowing R 3 to support most production DBMSs. Second, we develop a retroactive execution mechanism that provides high fidelity with the original trace while supporting nearly arbitrary code modifications. We demonstrate how R 3 simplifies debugging for real, hard-to-reproduce concurrency bugs from popular open-source web applications. We evaluate R 3 using TPC-C and microservice workloads and show that R 3 always-on recording has a small performance overhead (<25% for point queries but <0.1% for complex transactions like in TPC-C) during normal application execution and that R 3 can retroactively execute bugfixed code over recorded traces within 0.11--0.78× of the original execution time.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Your agent calls
Luneget_paper_fulltext
Free to start. No credit card required.
Terminal
Install the CLIlune papers fulltext a04edc9c-566b-44fd-8483-65b53be76eb8Cited by top-tier papers1
Ask how each one uses itBuilds on6
- Reverse Debugging of Kernel Failures in Deployed SystemsXinyang Ge, Ben Niu, Weidong CuiUSENIX ATC 2020 · 29 citations
- Taurus: Lightweight Parallel Logging for In-Memory Database Management SystemsYu Xia, Xiangyao Yu, Andrew Pavlo, Srinivas DevadasVLDB 2021 · 22 citations
- Lotus: Scalable Multi-Partition Transactions on Single-Threaded Partitioned DatabasesXinjing Zhou, Xiangyao Yu, Goetz Graefe, Michael StonebrakerVLDB 2022 · 11 citations
- Efficient Answering of Historical What-if QueriesFelix S. Campbell, Bahareh Sadat Arab, Boris GlavicSIGMOD 2022 · 7 citations
- Aria: A Fast and Practical Deterministic OLTP DatabaseYi Lu, Xiangyao Yu, Lei Cao, Samuel MaddenVLDB 2020
Related papers
- IsoDiff: Debugging Anomalies Caused by Weak IsolationYifan Gan, Xueyuan Ren, Drew Ripberger, Spyros Blanas et al.VLDB 2020
- DBStorm: Generating Various Effective Workloads for Testing Isolation LevelsKeqiang Li, Siyang Weng, Lyu Ni, Chengcheng Yang et al.ISSTA 2024 · 5 citations
- Are Database System Researchers Making Correct Assumptions about Transaction Workloads?Cuong D. T. Nguyen, Kevin Chen, Christopher DeCarolis, Daniel J. AbadiSIGMOD 2025 · 4 citations
- Repairing serializability bugs in distributed database programs via automated schema refactoringKia Rahmani, Kartik Nagar, Benjamin Delaware, Suresh JagannathanPLDI 2021 · 4 citations
- Leopard: A Black-Box Approach for Efficiently Verifying Various Isolation LevelsKeqiang Li, Siyang Weng, Peiyuan Liu, Lyu Ni et al.ICDE 2023 · 3 citations
