Testing a database for race conditions with QuickCheck: None
Paper in proceedings, 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.

erlang

quickcheck

Author

John Hughes

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

H. Bolinder

Ericsson AB

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

72-77

Subject Categories

Computer and Information Science

DOI

10.1145/2034654.2034667

ISBN

978-145030859-5

More information

Latest update

11/19/2018