3 ms·
One of the things that surprised me about this analysis was just how many bugs we found that had to do with the actual Raft implementation. Usually when I test
by aphyr 6y ago
One of the things that surprised me about this analysis was just how many bugs we found that had to do with the actual Raft implementation. Usually when I test Raft-based systems the bugs are at the edges--like the coupling of the system to the Raft library, treating it like an externally-queryable log rather than the driver of a state machine, and so on. We found integration bugs here too, but also a fair number of issues in the Raft library itself--and this is despite Redis-Raft having existing integration tests!
This stuff is hard!
- Diggsey 6y agoWas the C Raft implementation in use a pre-existing library, or was it developed specifically for Redis-Raft?
- aphyr 6y agoPre-existing! It's a fork of willamt's https://github.com/willemt/raft/ https://github.com/willemt/raft/, which has been around since 2013, and has property-based fuzz testing! It really does look like it's got its own extensive tests; I'm surprised we found issues.
- anentropic 6y agothis is kind of terrifying
- Serow225 6y agoHas anyone approached Jepsen about running an analysis on the Erlang Ra implementation? I believe they've been running Jepsen tests internally, just curious if they're thinking about getting an official analysis at some point. Thanks for all that you folks do!! * https://github.com/rabbitmq/ra https://github.com/rabbitmq/ra
- aphyr 6y agoNo, we haven't talked yet, but I would like to someday. :)
- e_proxus 6y agoWould love for Jepsen to take a stab at Erlang’s Mnesia database as well!
- kungfooguru 6y agoNot really worth it since distributed mnesia is basically CA (in terms of CAP) which shouldn't be a thing, but is in the case of mnesia :)