{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,14]],"date-time":"2026-03-14T09:50:34Z","timestamp":1773481834596,"version":"3.50.1"},"reference-count":42,"publisher":"Association for Computing Machinery (ACM)","issue":"11","content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. VLDB Endow."],"published-print":{"date-parts":[[2023,7]]},"abstract":"<jats:p>\n            Developers would benefit greatly from time travel: being able to\n            <jats:italic>faithfully replay<\/jats:italic>\n            past executions and\n            <jats:italic>retroactively execute<\/jats:italic>\n            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\n            <jats:italic>database-backed applications<\/jats:italic>\n            , an important class of distributed applications that access shared state through transactions.\n          <\/jats:p>\n          <jats:p>\n            We present R\n            <jats:sup>3<\/jats:sup>\n            , a novel Record-Replay-Retroaction tool. R\n            <jats:sup>3<\/jats:sup>\n            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\n            <jats:sup>3<\/jats:sup>\n            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\n            <jats:sup>3<\/jats:sup>\n            simplifies debugging for real, hard-to-reproduce concurrency bugs from popular open-source web applications. We evaluate R\n            <jats:sup>3<\/jats:sup>\n            using TPC-C and microservice workloads and show that R\n            <jats:sup>3<\/jats:sup>\n            always-on recording has a small performance overhead (&lt;25% for point queries but &lt;0.1% for complex transactions like in TPC-C) during normal application execution and that R\n            <jats:sup>3<\/jats:sup>\n            can retroactively execute bugfixed code over recorded traces within 0.11--0.78\u00d7 of the original execution time.\n          <\/jats:p>","DOI":"10.14778\/3611479.3611510","type":"journal-article","created":{"date-parts":[[2023,8,25]],"date-time":"2023-08-25T02:08:08Z","timestamp":1692929288000},"page":"3085-3097","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":7,"title":["R\n            <sup>3<\/sup>\n            : Record-Replay-Retroaction for Database-Backed Applications"],"prefix":"10.14778","volume":"16","author":[{"given":"Qian","family":"Li","sequence":"first","affiliation":[{"name":"Stanford University"}]},{"given":"Peter","family":"Kraft","sequence":"additional","affiliation":[{"name":"Stanford University"}]},{"given":"Michael","family":"Cafarella","sequence":"additional","affiliation":[{"name":"MIT CSAIL"}]},{"given":"\u00c7a\u011fatay","family":"Demiralp","sequence":"additional","affiliation":[{"name":"MIT CSAIL"}]},{"given":"Goetz","family":"Graefe","sequence":"additional","affiliation":[{"name":"Google"}]},{"given":"Christos","family":"Kozyrakis","sequence":"additional","affiliation":[{"name":"Stanford University"}]},{"given":"Michael","family":"Stonebraker","sequence":"additional","affiliation":[{"name":"MIT CSAIL"}]},{"given":"Lalith","family":"Suresh","sequence":"additional","affiliation":[{"name":"Feldera"}]},{"given":"Xiangyao","family":"Yu","sequence":"additional","affiliation":[{"name":"UW-Madison"}]},{"given":"Matei","family":"Zaharia","sequence":"additional","affiliation":[{"name":"UC Berkeley"}]}],"member":"320","published-online":{"date-parts":[[2023,8,24]]},"reference":[{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/2983323.2983825"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/TKDE.2017.2769056"},{"key":"e_1_2_1_5_1","unstructured":"AWS. 2022. AWS Lambda. https:\/\/aws.amazon.com\/lambda\/.  AWS. 2022. AWS Lambda. https:\/\/aws.amazon.com\/lambda\/."},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3514221.3526138"},{"key":"e_1_2_1_7_1","volume-title":"13th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 18). 17--32.","author":"Cui Weidong","unstructured":"Weidong Cui , Xinyang Ge , Baris Kasikci , Ben Niu , Upamanyu Sharma , Ruoyu Wang , and Insu Yun . 2018. {REPT} : Reverse debugging of failures in deployed software . In 13th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 18). 17--32. Weidong Cui, Xinyang Ge, Baris Kasikci, Ben Niu, Upamanyu Sharma, Ruoyu Wang, and Insu Yun. 2018. {REPT}: Reverse debugging of failures in deployed software. In 13th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 18). 17--32."},{"key":"e_1_2_1_8_1","volume-title":"Eidetic Systems. In OSDI","author":"Devecsery David","year":"2014","unstructured":"David Devecsery , Michael Chow , Xianzheng Dou , Jason Flinn , and Peter M. Chen . 2014 . Eidetic Systems. In OSDI 2014 . Broomfield, CO, 525--540. David Devecsery, Michael Chow, Xianzheng Dou, Jason Flinn, and Peter M. Chen. 2014. Eidetic Systems. In OSDI 2014. Broomfield, CO, 525--540."},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2015.7113278"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1346256.1346273"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/2597073.2597098"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.14778\/3055540.3055553"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.5555\/3489146.3489165"},{"key":"e_1_2_1_14_1","first-page":"193","article-title":"R2: An Application-Level Kernel for Record and Replay","volume":"8","author":"Guo Zhenyu","year":"2008","unstructured":"Zhenyu Guo , Xi Wang , Jian Tang , Xuezheng Liu , Zhilei Xu , Ming Wu , M Frans Kaashoek , and Zheng Zhang . 2008 . R2: An Application-Level Kernel for Record and Replay .. In OSDI , Vol. 8. 193 -- 208 . Zhenyu Guo, Xi Wang, Jian Tang, Xuezheng Liu, Zhilei Xu, Ming Wu, M Frans Kaashoek, and Zheng Zhang. 2008. R2: An Application-Level Kernel for Record and Replay.. In OSDI, Vol. 8. 193--208.","journal-title":"OSDI"},{"key":"e_1_2_1_15_1","volume-title":"Transactions Make Debugging Easy. In CIDR","author":"Li Qian","year":"2023","unstructured":"Qian Li , Peter Kraft , Michael Cafarella , \u00c7a\u011fatay Demiralp , Goetz Graefe , Christos Kozyrakis , Michael Stonebraker , Lalith Suresh , and Matei Zaharia . 2023 . Transactions Make Debugging Easy. In CIDR 2023. Qian Li, Peter Kraft, Michael Cafarella, \u00c7a\u011fatay Demiralp, Goetz Graefe, Christos Kozyrakis, Michael Stonebraker, Lalith Suresh, and Matei Zaharia. 2023. Transactions Make Debugging Easy. In CIDR 2023."},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.14778\/3407790.3407808"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2014.6816685"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/3093336.3037751"},{"key":"e_1_2_1_19_1","volume-title":"DEBS","author":"Meissner Dominik","year":"2018","unstructured":"Dominik Meissner , Benjamin Erb , Frank Kargl , and Matthias Tichy . 2018 . Retro-\u03bb: An event-sourced platform for serverless applications with retroactive computing support . In DEBS 2018. 76--87. Dominik Meissner, Benjamin Erb, Frank Kargl, and Matthias Tichy. 2018. Retro-\u03bb: An event-sourced platform for serverless applications with retroactive computing support. In DEBS 2018. 76--87."},{"key":"e_1_2_1_20_1","unstructured":"MongoDB. 2023. MongoDB Transactions. https:\/\/www.mongodb.com\/docs\/manual\/core\/transactions\/.  MongoDB. 2023. MongoDB Transactions. https:\/\/www.mongodb.com\/docs\/manual\/core\/transactions\/."},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/1394608.1382146"},{"key":"e_1_2_1_22_1","unstructured":"Moodle. 2017. Duplicate forum subscriptions due to race conditions. https:\/\/tracker.moodle.org\/browse\/MDL-59854.  Moodle. 2017. Duplicate forum subscriptions due to race conditions. https:\/\/tracker.moodle.org\/browse\/MDL-59854."},{"key":"e_1_2_1_23_1","unstructured":"Moodle. 2023. Moodle. https:\/\/moodle.org\/.  Moodle. 2023. Moodle. https:\/\/moodle.org\/."},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISCA.2005.16"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/3357223.3362733"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.14778\/3137765.3137793"},{"key":"e_1_2_1_27_1","volume-title":"USENIX Annual Technical Conference. 377--389","author":"O'Callahan Robert","year":"2017","unstructured":"Robert O'Callahan , Chris Jones , Nathan Froyd , Kyle Huey , Albert Noll , and Nimrod Partush . 2017 . Engineering Record and Replay for Deployability .. In USENIX Annual Technical Conference. 377--389 . Robert O'Callahan, Chris Jones, Nathan Froyd, Kyle Huey, Albert Noll, and Nimrod Partush. 2017. Engineering Record and Replay for Deployability.. In USENIX Annual Technical Conference. 377--389."},{"key":"e_1_2_1_28_1","unstructured":"PostgreSQL. 2023. Asynchronous Commit. https:\/\/www.postgresql.org\/docs\/current\/wal-async-commit.html.  PostgreSQL. 2023. Asynchronous Commit. https:\/\/www.postgresql.org\/docs\/current\/wal-async-commit.html."},{"key":"e_1_2_1_29_1","unstructured":"PostgreSQL. 2023. PostgreSQL. https:\/\/www.postgresql.org\/.  PostgreSQL. 2023. PostgreSQL. https:\/\/www.postgresql.org\/."},{"key":"e_1_2_1_30_1","unstructured":"The ZeroMQ project. 2023. JeroMQ Pure Java implementation of libzmq. https:\/\/github.com\/zeromq\/jeromq.  The ZeroMQ project. 2023. JeroMQ Pure Java implementation of libzmq. https:\/\/github.com\/zeromq\/jeromq."},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/3274808.3274810"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/3524842.3528463"},{"key":"e_1_2_1_33_1","volume-title":"Debugging the OmniTable Way. In OSDI","author":"Quinn Andrew","year":"2022","unstructured":"Andrew Quinn , Jason Flinn , Michael Cafarella , and Baris Kasikci . 2022 . Debugging the OmniTable Way. In OSDI 2022. Carlsbad, CA, 357--373. Andrew Quinn, Jason Flinn, Michael Cafarella, and Baris Kasikci. 2022. Debugging the OmniTable Way. In OSDI 2022. Carlsbad, CA, 357--373."},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.14778\/3342263.3342647"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/2002951.2002960"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/2213836.2213838"},{"key":"e_1_2_1_37_1","unstructured":"Vertica. 2023. Vertica. https:\/\/www.vertica.com\/.  Vertica. 2023. Vertica. https:\/\/www.vertica.com\/."},{"key":"e_1_2_1_38_1","unstructured":"WordPress. 2009. Comment Status for Posts in the Trash. https:\/\/core.trac.wordpress.org\/ticket\/11073.  WordPress. 2009. Comment Status for Posts in the Trash. https:\/\/core.trac.wordpress.org\/ticket\/11073."},{"key":"e_1_2_1_39_1","unstructured":"WordPress. 2009. Option inserts triggered from front page can cause duplicate entry errors. https:\/\/core.trac.wordpress.org\/ticket\/11437.  WordPress. 2009. Option inserts triggered from front page can cause duplicate entry errors. https:\/\/core.trac.wordpress.org\/ticket\/11437."},{"key":"e_1_2_1_40_1","unstructured":"WordPress. 2023. WordPress. https:\/\/wordpress.com\/.  WordPress. 2023. WordPress. https:\/\/wordpress.com\/."},{"key":"e_1_2_1_41_1","doi-asserted-by":"crossref","unstructured":"Yu Xia Xiangyao Yu Andrew Pavlo and Srinivas Devadas. 2020. Taurus: lightweight parallel logging for in-memory database management systems. (2020).  Yu Xia Xiangyao Yu Andrew Pavlo and Srinivas Devadas. 2020. Taurus: lightweight parallel logging for in-memory database management systems. (2020).","DOI":"10.14778\/3425879.3425889"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/859618.859633"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/3448016.3457559"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.14778\/3551793.3551843"}],"container-title":["Proceedings of the VLDB Endowment"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.14778\/3611479.3611510","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,9,23]],"date-time":"2023-09-23T22:22:14Z","timestamp":1695507734000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.14778\/3611479.3611510"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,7]]},"references-count":42,"journal-issue":{"issue":"11","published-print":{"date-parts":[[2023,7]]}},"alternative-id":["10.14778\/3611479.3611510"],"URL":"https:\/\/doi.org\/10.14778\/3611479.3611510","relation":{},"ISSN":["2150-8097"],"issn-type":[{"value":"2150-8097","type":"print"}],"subject":[],"published":{"date-parts":[[2023,7]]},"assertion":[{"value":"2023-08-24","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}