Testing a database for race conditions with QuickCheck: None
Paper in proceeding, 2011

In 2009, Claessen et al. presented a way of testing for race conditions in Erlang programs, using QuickCheck to generate parallel tests, a randomizing scheduler to provoke races, and a sequential consistency condition to detect failures of atomicity [1]. That work used a small industrial prototype as the main example, showing how two race conditions could be detected and diagnosed. In this paper, we apply the same methods to dets, a vital component of the mnesia database system, and more than an order of magnitude larger. dets is known to fail occasionally in production, making it a promising candidate for a race condition hunt. We found five race conditions with relatively little effort, two of which may account for the observed failures in production. We explain how the testing was done, present most of the QuickCheck specification used, and describe the problems we discovered and their causes.




John Hughes

Chalmers, Computer Science and Engineering (Chalmers), Software Technology (Chalmers)

H. Bolinder


Proceedings of the 2011 ACM SIGPLAN Erlang Workshop, Tokyo, 23 September 2011

978-145030859-5 (ISBN)

Subject Categories

Computer and Information Science





More information

Latest update