摘要
MongoDB is one of the first commercial distributed databases that support causal consistency.Its implementation of causal consistency combines several research ideas for achieving scalability,fault tolerance,and security.Given its inherent complexity,a natural question arises:"Has MongoDB correctly implemented causal consistency as it claimed?"To address this concern,the Jepsen team has conducted black-box testing of MongoDB.However,this Jepsen testing has several drawbacks in terms of specification,test case generation,implementation of causal consistency checking algorithms,and testing scenarios,which undermine the credibility of its reports.In this work,we propose a more thorough design of Jepsen testing of causal consistency of MongoDB.Specifically,we fully implement the causal consistency checking algorithms proposed by Bouajjani et al.and test MongoDB against three well-known variants of causal consistency,namely CC,CCv,and CM,under various scenarios including node failures,data movement,and network partitions.In addition,we develop formal specifications of causal consistency and their checking algorithms in TLA^(+),and verify them using the TLC model checker.We also explain how TLA^(+) specification can be related to Jepsen testing.
作者
Hong-Rong Ouyang
Heng-Feng Wei
Hai-Xiang Li
An-Qun Pan
Yu Huang
欧阳鸿荣;魏恒峰;李海翔;潘安群;黄宇(State Key Laboratory for Novel Software Technology,Nanjing University,Nanjing 210023,China;Software Institute,Nanjing University,Nanjing 210093,China;Tencent Distributed SQL Team of Technology and Engineering Group of Tencent,Tencent Inc.,Shenzhen 518054,China)
基金
supported by the CCF-Tencent Open Fund under Grant No.RAGR20200124
the National Natural Science Foundation of China under Grant Nos.61702253 and 61772258.