Lolipop is a basic implementation of Raft algorithm using a purely functional approach. It is effect agnostic meaning user can choose your own effect type (eg. cats IO, Future, ZIO)
To learn more, check Documentation
- add test for it, replay should work regardless of server type
- perform replay on start is probably easier
- Input: (events log, time)
- Output: States of each node
- Allow controlling time back and forth
- Randomly generate failure, this can be encoded by a DSL (try Free)
- Test case should test guarantee like no dirty read, no dirty write