{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,9]],"date-time":"2026-06-09T08:44:42Z","timestamp":1780994682361,"version":"3.54.1"},"reference-count":54,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2021,10,15]],"date-time":"2021-10-15T00:00:00Z","timestamp":1634256000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/501100000781","name":"European Research Council","doi-asserted-by":"publisher","award":["678177"],"award-info":[{"award-number":["678177"]}],"id":[{"id":"10.13039\/501100000781","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2021,10,20]]},"abstract":"<jats:p>Modern applications, such as social networking systems and e-commerce platforms are centered around using large-scale storage systems for storing and retrieving data. In the presence of concurrent accesses, these storage systems trade off isolation for performance. The weaker the isolation level, the more behaviors a storage system is allowed to exhibit and it is up to the developer to ensure that their application can tolerate those behaviors. However, these weak behaviors only occur rarely in practice and outside the control of the application, making it difficult for developers to test the robustness of their code against weak isolation levels.<\/jats:p>\n          <jats:p>This paper presents MonkeyDB, a mock storage system for testing storage-backed applications. MonkeyDB supports a key-value interface as well as SQL queries under multiple isolation levels. It uses a logical specification of the isolation level to compute, on a read operation, the set of all possible return values. MonkeyDB then returns a value randomly from this set. We show that MonkeyDB provides good coverage of weak behaviors, which is complete in the limit. We test a variety of applications for assertions that fail only under weak isolation. MonkeyDB is able to break each of those assertions in a small number of attempts.<\/jats:p>","DOI":"10.1145\/3485546","type":"journal-article","created":{"date-parts":[[2021,10,15]],"date-time":"2021-10-15T19:18:28Z","timestamp":1634325508000},"page":"1-27","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":16,"title":["MonkeyDB: effectively testing correctness under weak isolation levels"],"prefix":"10.1145","volume":"5","author":[{"given":"Ranadeep","family":"Biswas","sequence":"first","affiliation":[{"name":"Informal Systems, France"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Diptanshu","family":"Kakwani","sequence":"additional","affiliation":[{"name":"Microsoft, India"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Jyothi","family":"Vedurada","sequence":"additional","affiliation":[{"name":"IIT Hyderabad, India"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Constantin","family":"Enea","sequence":"additional","affiliation":[{"name":"IRIF, France \/ University of Paris, France \/ CNRS, France"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Akash","family":"Lal","sequence":"additional","affiliation":[{"name":"Microsoft Research, India"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2021,10,15]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-46681-0_28"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.5555\/930194"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.5555\/846219.847380"},{"key":"e_1_2_2_4_1","unstructured":"Deepthi Devaki Akkoorath and Annette Bieniusa. 2016. Antidote: the highly-available geo-replicated database with strongest guarantees. https:\/\/pages.lip6.fr\/syncfree\/attachments\/article\/59\/antidote-white-paper.pdf  Deepthi Devaki Akkoorath and Annette Bieniusa. 2016. Antidote: the highly-available geo-replicated database with strongest guarantees. https:\/\/pages.lip6.fr\/syncfree\/attachments\/article\/59\/antidote-white-paper.pdf"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/2741948.2741972"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-25543-5_17"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.CONCUR.2019.30"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/568271.223785"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.CONCUR.2016.7"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3360591"},{"key":"e_1_2_2_11_1","volume-title":"On the Complexity of Checking Transactional Consistency. CoRR, abs\/1908.04509","author":"Biswas Ranadeep","year":"2019"},{"key":"e_1_2_2_12_1","volume-title":"MonkeyDB: Effectively Testing Correctness against Weak Isolation Levels. CoRR, abs\/2103.02830","author":"Biswas Ranadeep","year":"2021"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.5281\/zenodo.5504052"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.5555\/2535461.2535468"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/3093333.3009895"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/3296979.3192415"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.CONCUR.2015.58"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/3152396"},{"key":"e_1_2_2_19_1","unstructured":"Transaction Processing Performance Council. 2020. TPC-C Benchmark Specification. http:\/\/tpc.org\/tpc_documents_current_versions\/pdf\/tpc-c_v5.11.0.pdf  Transaction Processing Performance Council. 2020. TPC-C Benchmark Specification. http:\/\/tpc.org\/tpc_documents_current_versions\/pdf\/tpc-c_v5.11.0.pdf"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1323293.1294281"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.14778\/2732240.2732246"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1071610.1071615"},{"key":"e_1_2_2_23_1","unstructured":"MariaDB Foundation. 2020. MariaDB: An Open Source Relational Database. https:\/\/mariadb.org\/  MariaDB Foundation. 2020. MariaDB: An Open Source Relational Database. https:\/\/mariadb.org\/"},{"key":"e_1_2_2_24_1","unstructured":"Galera. 2020. Galera Cluster for MySQL. https:\/\/galeracluster.com\/  Galera. 2020. Galera Cluster for MySQL. https:\/\/galeracluster.com\/"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.14778\/3407790.3407860"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/2914770.2837625"},{"key":"e_1_2_2_27_1","unstructured":"Java Platform. [n. d.]. JDBC: Java Database Connectivity API. https:\/\/en.wikipedia.org\/wiki\/Java_Database_Connectivity  Java Platform. [n. d.]. JDBC: Java Database Connectivity API. https:\/\/en.wikipedia.org\/wiki\/Java_Database_Connectivity"},{"key":"e_1_2_2_28_1","unstructured":"Jepsen. 2020. Distributed Systems Testing. https:\/\/jepsen.io\/  Jepsen. 2020. Distributed Systems Testing. https:\/\/jepsen.io\/"},{"key":"e_1_2_2_29_1","unstructured":"Jepsen Nemesis. 2021. Tutorial on Jepsen nemesis variants.. https:\/\/jepsen-io.github.io\/jepsen\/jepsen.nemesis.html  Jepsen Nemesis. 2021. Tutorial on Jepsen nemesis variants.. https:\/\/jepsen-io.github.io\/jepsen\/jepsen.nemesis.html"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.5555\/1325851.1325995"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276534"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/3158105"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/359545.359563"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.5555\/2643634.2643664"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/3093333.3009857"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/2043556.2043593"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/2815400.2815426"},{"key":"e_1_2_2_38_1","unstructured":"Microsoft. 2020. Azure Cosmos DB Local Emulator. https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/local-emulator  Microsoft. 2020. Azure Cosmos DB Local Emulator. https:\/\/docs.microsoft.com\/en-us\/azure\/cosmos-db\/local-emulator"},{"key":"e_1_2_2_39_1","unstructured":"Microsoft Coyote. 2019. Fearless coding for reliable asynchronous software. https:\/\/github.com\/microsoft\/coyote  Microsoft Coyote. 2019. Fearless coding for reliable asynchronous software. https:\/\/github.com\/microsoft\/coyote"},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/1379022.1375625"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.CONCUR.2018.41"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-53288-8_13"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-44914-8_20"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/2544173.2509514"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-67087-0_17"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/322154.322158"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/3035918.3056096"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.5555\/3278398"},{"key":"e_1_2_2_49_1","unstructured":"Kia Rahmani. 2018. Lifting Jepsen Tests to the Application Level. https:\/\/kiarahmani.github.io\/posts\/2018\/12\/jepsen\/  Kia Rahmani. 2018. Lifting Jepsen Tests to the Application Level. https:\/\/kiarahmani.github.io\/posts\/2018\/12\/jepsen\/"},{"key":"e_1_2_2_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/3360543"},{"key":"e_1_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/2813885.2737981"},{"key":"e_1_2_2_52_1","unstructured":"Twissandra. Accessed November 1 2020. Twitter clone on Cassandra. https:\/\/github.com\/twissandra\/twissandra  Twissandra. Accessed November 1 2020. Twitter clone on Cassandra. https:\/\/github.com\/twissandra\/twissandra"},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/3035918.3064037"},{"key":"e_1_2_2_54_1","unstructured":"ANSI X3. 1992. 135-1992. American National Standard for Information Systems-Database Language-SQL.  ANSI X3. 1992. 135-1992. American National Standard for Information Systems-Database Language-SQL."}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3485546","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3485546","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:18:40Z","timestamp":1750191520000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3485546"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,10,15]]},"references-count":54,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2021,10,20]]}},"alternative-id":["10.1145\/3485546"],"URL":"https:\/\/doi.org\/10.1145\/3485546","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,10,15]]},"assertion":[{"value":"2021-10-15","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}