Changelog of @hackage/libraft 0.4.0.0

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

  • Initial release.