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

erlang

quickcheck

Författare

John Hughes

Chalmers, Data- och informationsteknik, Programvaruteknik

H. Bolinder

Ericsson AB

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

72-77

Ämneskategorier

Data- och informationsvetenskap

DOI

10.1145/2034654.2034667

ISBN

978-145030859-5

Mer information

Senast uppdaterat

2018-11-19