Changelog for raft
0.3.0.0
- API change:
runRaftNode
now requires the monad it runs in to provide an
instance of the MonadRaftAsync
and MonadRaftChan
in the Raft.Monad
module in lieu of the previously necessary MonadConc
instance.
- API change: Removed the
MonadConc
constraint on all example monad
transformers and implemented inherited MonadRaftChan
and MonadRaftAsync
instances
- API change: Removed the
MonadConc
const
- API change: Renamed the old
Raft.Monad
module to Raft.Transtion
and moved the
RaftT
monad transformer from Raft.hs
to the Raft.Monad
module
- Improvement: Rework example monad
RaftExampleT
for simplicity
0.2.0.0
- Feature: Client requests are now cached by the current leader such that duplicate
client requests are not serviced
- Bug Fix: Fix issue in concurrent timer not resetting properly when the timeout
was set to values under 500ms
- Feature: Client read requests can now query entries by index or range of
indices
- Improvement: Raft nodes now only write to disk if the state changes during
handling of events
- Feature: Users can now specify what severity of log messages should be logged
- Bug Fix: Receiving all data from a socket in the RaftSocketT monad
transformer RaftRecvX typeclass instances inducing a deadlock has been
rewritten
- Feature: A PostgreSQL backend has been added for storage of log entries
0.1.2.0
- Added a heartbeat broadcast by leader on read requests from client to ensure
that the node is leader before responding to client
- Each log entry is now linked by sha256 hash to the log entry immediately
preceding it
- Fixed bug where the last log entry was not being read from disk before
starting the main event loop
- Added quickcheck-state-machine tests for black-box testing of the raft-example
client program
0.1.1.0
- Fixed MonadFail constraints for GHC 8.6
0.1.0.0