libraft v0.6 Release Notes
Release Date: 2019-06-13 // over 5 years ago-
0.6.0.0
๐ Feature: Optimized (reduced) the number of RPC messages sent between leader
๐ฒ and follower for the follower to reconcile a log disparity resulting from
network partitions.API change: Added a type parameter to many internal datatypes and type
classes, most importantly of which theRaftT
monad transformer with which
raft nodes are spawned.๐ Bug Fix: Validation of log entries upon appending them to a node's local log
๐ฒ no longer causes the nodes to crash; The leader now properly validates log
entries before replicating them to all followers.
Previous changes from v0.5.0.0
-
0.5.0.0
๐ Feature: Client write requests are now validated by the leader before being
๐ฒ written to its log using the functions from theRaftStateMachine
and
๐ฒRaftStateMachinePure
typeclasses; Followers do not re-validate the log
entry when they receive the entry from the leader.๐ Feature: Add
nix-build
andnix-shell
support for use with the nix package
manager.API change: Added a client request to query a raft node's metrics.
API change: Added
preprocessCmd
function to theRaftStateMachine
typeclass for implementations where the leader should add data to state
๐ฒ machine commands before creating the log entry.API change: The
clientSendX
family of functions now take aClientReq
value as an argument instead of a fully formedClientRequest
value, such
that the knownClientId
is used to construct theClientRequest
value
instead of users having to supply it themselves.API change: The
RaftStateMachinePureError sm v
type family from the
RaftStateMachinePure
typeclass must now have both aShow
and a
Serialize
instance.API change: Client write requests now have the potential of returning a
ClientWriteRespFail
signifying a failure during the validation of the
โก๏ธ request state machine update.API change: The
RaftStateMachine
typeclass now has a function
preprocessCmd
for applications that need the leader to manipulate the
๐ฒ command before it is made into a log entry and applied to the state machine.โ Tests: Factor out common test functionality and reorganize test files.
โ Tests: Added more comprehensive concurrency tests.
๐ Bug Fix: When running networks of size 2, 'incrCommitIndex' will no longer run
in an infinite loop when incrementing the leader's commit to the correct N.๐ Bug Fix: When an invalid client request is submitted, the leader appropriately
responds with a failure response and handles the next event as expected.๐ Bug Fix: Correctly construct the Append Entries RPC data when handling a
client read request as the leader.๐ Bug Fix: Candidates now transition to followers if the term in an Append
Entries RPC is >= to their current term.