2 min read
The Fauna team had been working on the FaunaDB tests extensively with Kyle Kingsbury, a computer safety researcher at Jepsen, for three months. “Our mandate for him was not merely to test the basic properties of the system, but rather to poke into the dark corners and exhaustively validate..FaunaDB”, states the Fauna team.
Jepsen team states that Fauna had written their own Jepsen tests, which have been refined and expanded throughout the collaboration between Jepsen and Fauna. Jepsen evaluated FaunaDB 2.5.4 and 2.5.5, along with several development builds up to 2.6.0-rc10. Jepsen team used three replicas, along with 5-10 nodes striped evenly across replicas for the tests. Additionally, the log node topologies in 2.5.4 and 2.5.5 were explicitly partitioned, with a copy in each of the replicas. The Jepsen team waited for data movement to complete as well as for all indices to signal readiness before initiating the testing process.
Fauna team states that FaunaDB’s core operations on single instances in 2.5.5 appeared quite “solid”. During the tests, the Fauna team reliably managed to create, read, update, and delete the records transactionally atsnapshot, serializable, and strict serializable isolation. Also, the acknowledged instance updates were never lost.
FaundaDB also managed to pass additional tests, while covering features such as indexes and temporality. By the release of FaunaDB 2.6.0-rc10, Fauna managed to address all the issues identified by Jepsen. However, progress is still needed around some minor work and schema changes. Other than that, FaunaDB also provides the “highest possible level of correctness”. FaunaDB team is currently planning on promoting SI or serializable transactions to strict serializability which is the gold standard for concurrent systems.
Another noticeable fact about FaunaDB is that it is self-operating. FaunaDB has been especially designed to offer support for online addition and removal of nodes with appropriate backpressure. Also, it is architecturally sound. FaunaDB combines Calvin’s cross-shard transactional protocol with the Raft’s consensus system for individual shards.
Finally, the Jepsen team states that the bugs found in FaunaDB are implementation problems, and Fauna will be working on fixing the detected bugs as soon as possible. “FaunaDB’s approach is fundamentally sound…Calvin-based systems like FaunaDB could play an important future role in the distributed database landscape”, states the Jepsen team.
For more information, check out the official Jepsen results post.