!UM      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe_94libraft"The async computation of the timerlibraft0When the TMVar is empty, the timer is being usedlibraftCCreate a new timer with the supplied timer action and timer length,libraftCreate a new timer with the supplied timer action, random seed, and range from which the the timer will choose a random timer length at each start or reset.libraftStart the timer. If the timer is already running, the timer is not started. Returns True if the timer was succesfully started.libraft+Resets the timer with a new random timeout.libraftWait for a timer to completeSafe_9None ,.79;HMSX_mB3 libraft#Representation of monotonic indices libraft*Representation of monotonic election termslibraftvRepresentation of the current leader in the cluster. The system is considered to be unavailable if there is no leaderlibraftUnique identifier of a leaderlibraftUnique identifier of a clientlibraft Unique identifier of a Raft nodelibraftInitial term. Terms start at 0libraft!Initial index. Indeces start at 0 libraftADecrement index. If the given index is 0, return the given index        None,79>@AHSVX_HNlibraftHPersistent state that all Raft nodes maintain, regardless of node state.PlibraftLast term server has seenQlibraft/Candidate id that received vote in current termRlibraftFProvides an interface to read and write the persistent state to disk.WlibraftIA node initiates its persistent state with term 0 and with its vote blank NOQPRVUTSW RVUTSNOQPWNone&',1789>@AHSVX_k]u\libraft!The result of reading one or moredlibraftoRepresentation of possible errors that come from reading, writing or deleting logs from the persistent storageglibraftAProvides an interface for nodes to read log entries from storage.ilibraftRead the log at a given indexjlibraftMRead log entries from a specific index onwards, including the specific indexklibraft"Read the last log entry in the logllibraftCProvides an interface for nodes to delete log entries from storage.nlibraftwDelete log entries from a given index; e.g. 'deleteLogEntriesFrom 7' should delete every log entry with an index >= 7.qlibraft@Provides an interface for nodes to write log entries to storage.slibraft&Write the given log entries to storagetlibraft=Provides an interface to initialize a fresh log entry storagewlibraft1The datatype representing a node's last log entry{libraft0Representation of an entry in the replicated log}libraftIndex of entry in the log~libraft&Term when entry was received by leaderlibraftCommand to update state machinelibraft(Id of the client that issued the commandlibraft-Used as a first committed entry of a new termlibraft For debugging & testing purposeslibraft-Read entries from the log between two indices:\]^_`abcdefghijklmnopqrstuvwxyz{|}~:{|}~zwxytuv_`a\]^bcghijkqrslmnopfdeNone8@ACHVX_knlibraft:Expensive validation using global state not cacheable in libraftSome state machines need the leader to preprocess commands issued by client; e.g. attaching a timestamp before creating the log entrylibraft Query the  value from the monadic contextlibraftInterface to handle commands in the underlying state machine. Functional dependency permitting only a single state machine command to be defined to update the state machine.libraftApply a log entry to the supplied state machine, allowing the user to specify whether or not to monadically validate the command in addition to the pure validation logic.xThis function first unwraps the log entry to see if it is a no-op or contains an actual state machine command to apply.libraftApply a state machine command to the supplied state machine, allowing the user to specify whether or not to monadically validate the command in addition to the pure validation logic. None 79=>?@AHV_Xlibraft5Representation of a response to a RequestVote messagelibraft+current term for candidate to update itselflibraft"true means candidate recieved votelibraftVRepresentation of the message sent by candidates to their peers to request their votelibraftcandidates termlibraftcandidate requesting votelibraft#index of candidate's last log entrylibraft"term of candidate's last log entrylibraftJRepresentation of the response from a follower to an AppendEntries messagelibraft(current term for leader to update itselflibraftJtrue if follower contained entry matching aePrevLogIndex and aePrevLogTermlibraft.which read request the response corresponds tolibraft;Representation of a message sent from a leader to its peerslibraft Leader's termlibraft:Leader's identifier so that followers can redirect clientslibraft1Index of log entry immediately preceding new oneslibraftTerm of aePrevLogIndex entrylibraft*Log entries to store (empty for heartbeat)libraftLeader's commit indexlibraft-which read request the message corresponds tolibraftThe data used to construct an AppendEntries value, snapshotted from the node state at the time the AppendEntries val should be created.libraft.Representation of a message sent between nodeslibraft9Interface for nodes to receive messages from one anotherlibrafthInterface for nodes to send messages to one another. E.g. Control.Concurrent.Chan, Network.Socket, etc.66None79_libraft#Base 16 encoded last log entry hash !"#$%& !#"$%&None_\7libraft&Configuration of a node in the cluster9libraftNode id of the running node:libraft(Set of all other node ids in the cluster;libraft+Range of times an election timeout can take<libraftHeartbeat timeout timer=libraft'Create a fresh DB or read from existing@libraftIf the user specifies a port to fork the EKG server on, make sure the port is open and return the valid port number. If the user does not specify a port to run the monitoring server on, return Nothing.-/.013246578=<;9:>?@A78=<;9:4650132>-/.?@A None&'1479;=>?@ACHMSVX_k`$RlibraftwEach client may have at most one command outstanding at a time and commands must be dispatched in serial number order.`libraft1Representation of a redirect response to a clientblibraft.Representation of a write response to a clientclibraftIIndex of the entry appended to the log due to the previous client requestelibraft-Representation of a read response to a clientilibraft:The datatype sent back to the client as an actual responsejlibraft3Respond with the latest state of the state machine.klibraft7Respond with the index of the entry appended to the logllibraft.Respond with the node id of the current leadermlibraft'Respond with the node's current metricstlibraft2Specification for the data inside a ClientResponseylibraftPTypeclass to make it easier to write polymorphic functions over ClientReq types}libraft+Issue a command to update the state machinelibraft"Representation of a client requestlibraft-Request the latest state of the state machinelibraftWrite a commandlibraft"Request the metrics of a raft nodelibraft=Representation of a client request coupled with the client idlibraft9Interface for Raft nodes to receive messages from clientslibraft4Interface for Raft nodes to send messages to clientslibraft@Send a read request to the curent leader and wait for a responselibraft\Send a read request to a specific raft node, regardless of leader, and wait for a response.libraft but with a timeoutlibraftBSend a write request to the current leader and wait for a responselibraft\Send a read request to a specific raft node, regardless of leader, and wait for a response.libraftRGiven a blocking client send/receive, retry if the received value is not expectedlibraft7Send a read request to the current leader. Nonblocking.libraft8Send a write request to the current leader. Nonblocking.libraftmSend a write request to a specific raft node, ignoring the current leader. This function is used in testing.libraft2Send a request to the current leader. Nonblocking.libraftgSend a request to a specific raft node, ignoring the current leader. This function is used in testing.libraftNSend a request to a random node. This function is used if there is no leader.libraftrWaits for a write response from the leader Warning: This function discards unexpected read and redirect responseslibraftrWaits for a read response from the leader Warning: This function discards unexpected write and redirect responseslibraft*Waits for a metrics response on the clientlibrafttWait for a response from the current leader. This function handles leader changes and write request serial numbers.\_FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\y~_|}z{ijklmtuvwxqrsnopefghbcd`a^_[\]XYZRSTUVWOPQNFGHIJKLM None &'.17HSX_m libraft0Index of highest log entry known to be committedlibraft3Index of highest log entry applied to state machinelibraftCFor each server, index of the next log entry to send to that serverlibraftLFor each server, index of highest log entry known to be replicated on serverlibraftIndex, term, and client id of the last log entry in the node's log. The only time `Maybe ClientId` will be Nothing is at the initial term.libraft)Number of read requests handled this termlibraftYThe number of successful responses received regarding a specific read request heartbeat.libraft9The cache of client write requests received by the leaderlibraftThe type mapping client ids to the serial number of their latest write requests and the index of the entry if it has been replicated.libraftThe type mapping the number of the read request serviced to the id of the client that issued it and the number of success responses from followers confirming the leadership of the current leaderlibraft0Index of highest log entry known to be committedlibraft3Index of highest log entry applied to state machinelibraft*Votes from other nodes in the raft networklibraft6Index and term of the last log entry in the node's loglibraftLThe client write request cache, growing linearly with the number of clientslibraftId of the current leaderlibraft0Index of highest log entry known to be committedlibraft3Index of highest log entry applied to state machinelibraft6Index and term of the last log entry in the node's loglibraft;The term of the log entry specified in and AppendEntriesRPClibraftLThe client write request cache, growing linearly with the number of clientslibraft!The volatile state of a Raft Nodelibraft/Existential type hiding the internal node statelibraft7Existential type hiding the result type of a transitionlibraft*All valid state transitions of a Raft nodelibraft#A node in Raft begins as a followerlibraft+Update the last log entry in the node's loglibraftXGet the last applied index and the commit index of the last log entry in the node's loglibraftuGet the index of highest log entry applied to state machine and the index of highest log entry known to be committedlibraft$Check if node is in a follower statelibraft%Check if node is in a candidate statelibraft"Check if node is in a leader stateA     A      None"#=?@ACMSX_m6libraft*Representation of the severity of the logs:libraft'Representation of the logs' destination>libraft#Representation of the logs' contextMlibraft.The computation from which to extract the logs/&'()*+,-/.0125436987:=<;>@?BACDEFGHIJKLMNOPQRST/>@?BA:=<;698712543,-/.0CD*+EFGHIJKL'()M&NOPQRST None17_`libraft*Representation of message events to a nodealibraftIncoming event from a peerblibraftIncoming event from a clientclibraftRepresentation of timeoutsdlibraft4Timeout after which a follower will become candidateelibraftETimeout after which a leader will send AppendEntries RPC to all peersflibraft9Representation of events a raft node can send and receive `bacedfhg fhgced`ba None,19;=>?@ACHMV_:olibraftcThe raft server environment composed of the concurrent variables used in the effectful raft layer.wlibraftyThe typeclass encapsulating the concurrency operations necessary for the implementation of the main event handling loop.~libraftThe typeclass specifying the datatype used as the core event channel in the main raft event loop, as well as functions for creating, reading, and writing to the channel, and how to fork a computation that performs some action with the channel.Note: This module uses AllowAmbiguousTypes which removes the necessity for Proxy value arguments in lieu of TypeApplication. For example:  newRaftChan @v  instead of ! newRaftChan (Proxy :: Proxy v) ylibraft+The role of the current thread being forkedlibraftThe action to forknopqrstuvwxyz{|}~~z{|}wxyopqrstuvnNone"#1479;=>?@AHMPVX_k3libraft6A single threaded PostgreSQL storage monad transformerlibraftIRun a RaftPostgresT computation by supplying the database connection infolibraftLHelper function for RaftXLog typeclasses such that we can easily catch all PGError-s and connect to the DB if we haven't alreadylibraft-Load the raft schema at compile time using THlibraft,Execute DB schema to build the raft databaselibraft4Create the libraft database to store all log entries  None"#1=>?@AHMSVX_k YNone1>SX_ylibraft$Send a message to a specific node idlibraft3Send a unique message to specific nodes in parallellibraft'Broadcast the same message to all nodeslibraft$Append entries to the replicated loglibraft(Respond to client after a client requestlibraftReset a timeout timerlibraft;Update the client request cache from the given index onward  None&'18=>?@ACHMSVX__ libraft;Returns the set of all node ids excluding the node's own id libraftResets the election timeout.          None"#&'.=>?@APX_libraftLeaders should not respond to  messages.!libraftLeaders should not respond to  messages."libraftLeaders should not respond to  messages.libraftIf there exists an N such that N > commitIndex, a majority of matchIndex[i] >= N, and log[N].term == currentTerm: set commitIndex = NlibraftCConstruct an AppendEntriesRPC given log entries and a leader state. !"#$% !"#$%None"#&'.=>?@AX_(-&librafttHandle AppendEntries RPC message from Leader Sections 5.2 and 5.3 of Raft Paper & Figure 2: Receiver Implementation Note: see NE datatype for discussion about not keeping the entire log in memory.'libraft Followers should not respond to  messages.)libraft Followers should not respond to  messages.*libraft:Follower converts to Candidate if handling ElectionTimeout+libraftWhen a client handles a client request, it redirects the client to the current leader by responding with the current leader id, if it knows of one.,libraftWhen a client handles a client request, it redirects the client to the current leader by responding with the current leader id, if it knows of one.libraftWhen a client handles a client request, it redirects the client to the current leader by responding with the current leader id, if it knows of one.&'()*+,&'()*+,None"#&'.=>?@APX_`/k.libraft!Candidates should not respond to  messages.0libraft!Candidates should not respond to  messages.libraftWhen candidates handle a client request, they respond with NoLeader, as the very reason they are candidate is because there is no leader. This is done instead of simply not responding such that the client can know that the node is live but that there is an election taking place.-./0123-./0123None"#&'.=>?@ASX_1=libraft$Main entry point for handling events45<;:9876=>?@AB=45<;:9876>?@ABNone"#&'1=>?@AMSX_k:}ClibraftXRun timers, RPC and client request handlers and start event loop. It should run foreverlibraft)Handles all actions produced by the main handleEventLoop' call.libraftProducer for rpc message eventslibraftProducer for rpc message eventslibraft'Producer for the election timeout eventlibraft(Producer for the heartbeat timeout eventClibraftNode configurationlibraft-Config values that can be provided optionallylibraft$The means with which to log messageslibraftInitial state machine state  NOPQRSTUVWdefghijklmnopqrsz{|}~78:9;<=`abcdefghijklm6789:;<=>?@AB`abcdefghopqrstuvCDRSTUVopqrstuvCDijklmefghbcd`a78:9;<=fghcde`ab{|}~zqrsoplmnghijkfde>?@AB:;<=6789  NOPQW  None_FElibraft+Convert a host and a port to a valid NodeIdGlibraft.Retrieve the host and port from a valid NodeIdHlibraftGet a free port number.IlibraftReceive bytes on a socket until an entire message can be decoded. This function fixes the deserialization of the bytes sent on the socket to the implementation of the Serialize typeclass.EFGHIEFGHINone"#1=>?@AHMSVX_kQ'Olibraft7Queue of RPC messages to be processed by event handlersPlibraftBQueue of client request messages to be processed by event handlersQlibraft/Map of variables to which responses to a request are written. N.B.: this assumes a client id uniquely identifies a request; A client will never send a request without having either 1) given up on the a previous request because of a timeout, or 2) received a response to each previous request issued.Slibraft,we managed to write a valid response to the TMVarTlibraftXif we get overlapping requests coming in with the same client id, we "kill" one of them JKLMNQPORTSUV RTSMNQPOJKLUVNone"#1;=>?@AHMSVX_SxlibraftRSend a client read request using the example socket interface of RaftSocketClientM opqrstuvwxy stuvpqrowxyNone"#1=>?@AHMSVX_kT   !""##$$%&'())*++,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcddefghijklmnopqrstuvwwxyz{|}~      !"#$%&'()*+,-./01234567889:;<=>>?@ABCDEFGHIJK L M N O P Q R S T U U V W W X Y Z [ \ N ] ^ M _ ` ` a a b c d e f g h i j k l m n o p q r s t q n u v w x y z { | } ~  | z x                                                                                                                                                                           ! " # # $ % & ' ( ) * + , - . / / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V P W X Y Z [ \ ] ^ ^ _ ` a b c d e f g h i j k l m n o p q r s @ A B C t u v w x y z { | } ~          i@A      !"#$%&'()*+,-./01234567899:;;<=>?@ABCDEFGHIJKLMNOPQRSSTUUVWWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      %libraft-0.5.0.0-J9sQlo4v2xjSwCkwompQRControl.Concurrent.STM.Timer Raft.TypesRaft.PersistentRaft.LogRaft.StateMachineRaft.RPC Raft.Metrics Raft.Config Raft.ClientRaft.NodeState Raft.Logging Raft.Event Raft.MonadRaft.Log.PostgreSQL"Examples.Raft.FileStore.Persistent Raft.ActionRaft.Transition Raft.Leader Raft.FollowerRaft.Candidate Raft.HandleRaftExamples.Raft.Socket.CommonExamples.Raft.Socket.NodeExamples.Raft.Socket.ClientExamples.Raft.FileStore.Log Paths_libraftTimernewTimer newTimerRange startTimer resetTimer waitTimer SerialNumIndexTermModeFollower CandidateLeader CurrentLeaderNoLeaderLeaderId unLeaderIdClientIdNodeIdsNodeId intToNaturalterm0incrTermprevTermindex0 incrIndexdecrIndexWithDefault0$fFromFieldTerm $fToFieldTerm$fFromFieldIndex$fToFieldIndex$fShowClientId$fReadClientId $fEqClientId $fOrdClientId$fGenericClientId$fSerializeClientId$fShowLeaderId$fReadLeaderId $fEqLeaderId$fGenericLeaderId$fSerializeLeaderId$fShowCurrentLeader$fEqCurrentLeader$fGenericCurrentLeader$fSerializeCurrentLeader $fShowMode $fReadMode $fGenericTerm $fShowTerm$fEqTerm $fOrdTerm $fEnumTerm$fSerializeTerm $fShowIndex $fReadIndex$fGenericIndex $fEqIndex $fOrdIndex $fEnumIndex $fNumIndex$fIntegralIndex $fRealIndex$fSerializeIndex$fShowSerialNum$fReadSerialNum$fGenericSerialNum $fEqSerialNum$fOrdSerialNum$fEnumSerialNum$fNumSerialNum$fSerializeSerialNumPersistentState currentTermvotedFor RaftPersistRaftPersistErrorinitializePersistentStatereadPersistentStatewritePersistentStateinitPersistentState$fShowPersistentState$fEqPersistentState$fGenericPersistentState$fSerializePersistentStateReadEntriesResOneEntry ManyEntriesReadEntriesSpecByIndex ByIndices IndexInterval RaftLogErrorRaftLogExceptionsRaftLog RaftReadLogRaftReadLogError readLogEntryreadLogEntriesFromreadLastLogEntry RaftDeleteLogRaftDeleteLogErrordeleteLogEntriesFrom DeleteSuccess RaftWriteLogRaftWriteLogErrorwriteLogEntries RaftInitLogRaftInitLogError initializeLog LastLogEntry NoLogEntriesEntriesEntry entryIndex entryTerm entryValue entryIssuer entryPrevHash EntryHash unEntryHash EntryValueNoValue EntryIssuer ClientIssuer LeaderIssuer genesisHash hashEntrylastEntryIndexhashLastLogEntrylastLogEntryIndexlastLogEntryTermlastLogEntryIndexAndTermlastLogEntryIssuer clientReqData updateLog readEntries$fFromFieldEntryIssuer$fToFieldEntryIssuer$fFromFieldEntryValue$fToFieldEntryValue$fFromFieldEntryHash$fToFieldEntryHash$fShowEntryIssuer$fReadEntryIssuer$fEqEntryIssuer$fGenericEntryIssuer$fSerializeEntryIssuer$fShowEntryValue$fEqEntryValue$fGenericEntryValue$fSerializeEntryValue$fShowEntryHash$fReadEntryHash $fEqEntryHash$fOrdEntryHash$fGenericEntryHash$fSerializeEntryHash $fShowEntry $fEqEntry$fGenericEntry$fSerializeEntry$fShowLastLogEntry$fShowInvalidLog$fShowIndexInterval$fGenericIndexInterval$fSerializeIndexInterval$fShowReadEntriesSpec$fGenericReadEntriesSpec$fSerializeReadEntriesSpec$fExceptionReadEntriesError$fShowReadEntriesError$fShowRaftLogErrorEntryValidationNoMonadicValidationMonadicValidationRaftStateMachine validateCmd preprocessCmdaskRaftStateMachinePureCtxRaftStateMachinePureRaftStateMachinePureErrorRaftStateMachinePureCtx rsmTransition applyLogEntry applyLogCmdRequestVoteResponservrTermrvrVoteGranted RequestVotervTerm rvCandidateIdrvLastLogIndex rvLastLogTermAppendEntriesResponseaerTerm aerSuccessaerReadRequest AppendEntriesaeTerm aeLeaderIdaePrevLogIndex aePrevLogTerm aeEntriesaeLeaderCommit aeReadRequestAppendEntriesDataaedTermaedLeaderCommitaedEntriesSpecAppendEntriesSpec FromIndex FromNewLeaderFromClientWriteReq NoEntries NoEntriesSpec FromHeartbeatFromClientReadReqRPCTypetoRPCRPCAppendEntriesRPCAppendEntriesResponseRPCRequestVoteRPCRequestVoteResponseRPC RPCMessagesenderrpc RaftRecvRPCRaftRecvRPCError receiveRPC RaftSendRPCsendRPCrpcTerm$fRPCTypeRequestVoteResponsev$fRPCTypeRequestVotev$fRPCTypeAppendEntriesResponsev$fRPCTypeAppendEntriesv$fShowNoEntriesSpec$fShowAppendEntriesSpec$fShowAppendEntriesData$fShowAppendEntries$fGenericAppendEntries$fSerializeAppendEntries$fShowAppendEntriesResponse$fGenericAppendEntriesResponse $fSerializeAppendEntriesResponse$fShowRequestVote$fGenericRequestVote$fSerializeRequestVote$fShowRequestVoteResponse$fGenericRequestVoteResponse$fSerializeRequestVoteResponse $fShowRPC $fGenericRPC$fSerializeRPC$fShowRPCMessage$fGenericRPCMessage$fSerializeRPCMessageRaftNodeMetricsinvalidCmdCountereventsHandledCounternodeStateLabellastLogHashLabellastLogIndexGaugecommitIndexGaugedefaultRaftNodeMetricsgetMetricsStoregetRaftNodeMetricssetNodeStateLabelsetLastLogEntryHashLabelsetLastLogEntryIndexGaugesetCommitIndexGaugeincrInvalidCmdCounterincrEventsHandledCounter$fShowRaftNodeMetrics$fGenericRaftNodeMetrics$fSerializeRaftNodeMetrics$fShowRaftNodeLabel$fShowRaftNodeGauge$fShowRaftNodeCounter ConfigErrorInvalidMetricsPortNoFreePortAvailableOptionalRaftNodeConfigraftConfigMetricsPortraftConfigTimerSeed StorageStateNewExistingRaftNodeConfigraftConfigNodeIdraftConfigNodeIdsraftConfigElectionTimeoutraftConfigHeartbeatTimeoutraftConfigStorageStatedefaultOptionalRaftNodeConfigresolveMetricsPortresolveMetricsPortEresolveTimerSeed$fShowStorageState$fShowRaftNodeConfig$fShowOptionalRaftNodeConfig$fShowConfigErrorRaftClientErrorRaftClientSendErrorRaftClientRecvErrorRaftClientTimeoutRaftClientUnexpectedReadRespRaftClientUnexpectedWriteRespRaftClientUnexpectedMetricsRespRaftClientUnexpectedRedirect RaftClientT RaftClientEnv raftClientIdRaftClientStateraftClientCurrentLeaderraftClientSerialNumraftClientRaftNodesraftClientRandomGenRaftClientRecvraftClientRecvRaftClientSendraftClientSendClientMetricsRespClientRedirRespClientWriteRespClientWriteRespSuccessClientWriteRespFailClientReadRespClientReadRespStateMachineClientReadRespEntryClientReadRespEntriesClientResponseClientReadResponseClientWriteResponseClientRedirectResponseClientMetricsResponseClientWriteRespSpecClientWriteRespSpecSuccessClientWriteRespSpecFailClientReadRespSpecClientReadRespSpecEntriesClientReadRespSpecStateMachineClientRespSpecClientRedirRespSpecClientMetricsRespSpec ClientReqTypeClientMetricsReqClientAllMetricsReqClientWriteReq ClientCmdReq ClientReadReqClientReadEntriesClientReadStateMachine ClientReq ClientRequestRaftRecvClientRaftRecvClientError receiveClientRaftSendClient sendClientinitRaftClientStaterunRaftClientT clientReadclientReadFromclientReadTimeout clientWrite clientWriteToclientWriteTimeoutclientQueryNodeMetricsclientQueryNodeMetricsTimeout clientTimeoutretryOnRedirectclientSendReadclientSendWriteclientSendMetricsReqTo clientSend clientRecv clientAddNodeclientGetNodes$fSerializeClientReq$fSerializeClientRequest $fClientReqTypeClientMetricsReqv$fClientReqTypeClientWriteReqv$fClientReqTypeClientReadReqv$fRaftClientRecvRaftClientTsv$fRaftClientSendRaftClientTv$fMonadExceptionRaftClientT$fMonadBaseControlIORaftClientT$fMonadTransControlRaftClientT$fMonadTransRaftClientT$fShowClientReadReq$fGenericClientReadReq$fSerializeClientReadReq$fShowClientWriteReq$fGenericClientWriteReq$fSerializeClientWriteReq$fShowClientMetricsReq$fGenericClientMetricsReq$fSerializeClientMetricsReq$fShowClientReq$fGenericClientReq$fShowClientRequest$fGenericClientRequest$fShowClientReadRespSpec$fGenericClientReadRespSpec$fSerializeClientReadRespSpec$fGenericClientWriteRespSpec$fGenericClientRespSpec$fShowClientReadResp$fGenericClientReadResp$fSerializeClientReadResp$fGenericClientWriteResp$fShowClientRedirResp$fGenericClientRedirResp$fSerializeClientRedirResp$fShowClientMetricsResp$fGenericClientMetricsResp$fSerializeClientMetricsResp$fGenericClientResponse$fFunctorRaftClientT$fApplicativeRaftClientT$fMonadRaftClientT$fMonadIORaftClientT$fMonadStateRaftClientT$fMonadReaderRaftClientT$fMonadFailRaftClientT$fAlternativeRaftClientT$fMonadPlusRaftClientT$fShowRaftClientError$fMonadBaseRaftClientT$fMonadMaskRaftClientT$fMonadCatchRaftClientT$fMonadThrowRaftClientT$fSerializeClientWriteResp$fShowClientWriteResp$fSerializeClientResponse$fShowClientResponse$fSerializeClientWriteRespSpec$fShowClientWriteRespSpec$fSerializeClientRespSpec$fShowClientRespSpec LeaderState lsCommitIndex lsLastApplied lsNextIndex lsMatchIndexlsLastLogEntrylsReadReqsHandled lsReadRequestlsClientReqCacheClientWriteReqCacheClientReadReqsClientReadReqData crrdClientId crrdReadReqCandidateState csCommitIndex csLastAppliedcsVotescsLastLogEntrycsClientReqCache FollowerStatefsCurrentLeader fsCommitIndex fsLastAppliedfsLastLogEntryfsTermAtAEPrevIndexfsClientReqCache NodeStateNodeFollowerStateNodeCandidateStateNodeLeaderState RaftNodeStateunRaftNodeState ResultState Transition StartElectionHigherTermFoundFollowerRestartElectionDiscoverLeaderHigherTermFoundCandidate BecomeLeaderHandleClientReq SendHeartbeatDiscoverNewLeaderHigherTermFoundLeaderNoopfollowerResultStatecandidateResultStateleaderResultStatenodeModeinitRaftNodeStatesetLastLogEntrygetLastLogEntrygetLastLogEntryIndexgetCommitIndexgetLastAppliedAndCommitIndex isFollower isCandidateisLeader$fShowClientReadReqData$fShowCandidateState$fShowFollowerState$fShowLeaderState$fShowNodeState$fShowRaftNodeState$fShowResultState$fShowTransition RaftLoggerM RaftLoggerT unRaftLoggerT RaftLogger loggerCtx LogMsgData logMsgNodeIdlogMsgNodeStatelogMsgLogMsgmTimeseverity logMsgDataSeverityDebugInfoCriticalLogDestLogWithLogFile LogStdoutLogCtxNoLogs logCtxDestlogCtxSeverity logMsgToTextlogMsgDataToText mkLogMsgData logToDest logToStdout logToFilelogWithSeverityIO logInfoIO logDebugIO logCriticalIOrunRaftLoggerTrunRaftLoggerMlogWithSeveritylogInfologDebug logCritical logAndPanic logAndPanicIO$fRaftLoggervRaftLoggerT$fShowSeverity $fEqSeverity $fOrdSeverity$fShowLogMsgData $fShowLogMsg$fFunctorRaftLoggerT$fApplicativeRaftLoggerT$fMonadRaftLoggerT$fMonadStateRaftLoggerT$fMonadTransRaftLoggerT MessageEventRPCMessageEventClientRequestEventTimeoutElectionTimeoutHeartbeatTimeoutEvent TimeoutEvent$fSerializeMessageEvent $fShowTimeout$fShowMessageEvent$fGenericMessageEvent $fShowEventRaftTRaftEnv eventChanresetElectionTimerresetHeartbeatTimerraftNodeConfigraftNodeLogCtxraftNodeMetrics MonadRaftFork RaftThreadIdraftForkRaftThreadRole RPCHandlerClientRequestHandlerCustomThreadRole MonadRaftChan RaftEventChan readRaftChan writeRaftChan newRaftChan MonadRaftinitializeRaftEnvrunRaftT$fMonadRaftChanvProgram$fMonadRaftChanvIO$fMonadRaftForkProgram$fMonadRaftForkIO$fMonadMetricsRaftT$fRaftLoggervRaftT$fMonadRaftForkRaftT$fMonadTransRaftT$fShowRaftThreadRole$fFunctorRaftT$fApplicativeRaftT $fMonadRaftT$fMonadReaderRaftT$fMonadStateRaftT$fMonadFailRaftT$fAlternativeRaftT$fMonadPlusRaftT$fMonadMaskRaftT$fMonadCatchRaftT$fMonadThrowRaftT$fMonadIORaftT RaftPostgresTunRaftPostgresTrunRaftPostgresTrunRaftPostgresMraftDatabaseNameraftDatabaseConnInfo initConnInfodeleteDBsetupDB$fMonadRaftForkRaftPostgresT$fMonadRaftChanvRaftPostgresT"$fRaftStateMachineRaftPostgresTsmv$fRaftRecvClientRaftPostgresTv $fRaftSendClientRaftPostgresTsmv$fRaftRecvRPCRaftPostgresTv$fRaftSendRPCRaftPostgresTv$fRaftPersistRaftPostgresT$fRaftDeleteLogRaftPostgresTv$fRaftWriteLogRaftPostgresTv$fRaftReadLogRaftPostgresTv$fRaftInitLogRaftPostgresTv$fExceptionRaftPostgresError$fFunctorRaftPostgresT$fApplicativeRaftPostgresT$fMonadRaftPostgresT$fMonadIORaftPostgresT$fMonadFailRaftPostgresT$fMonadReaderRaftPostgresT$fAlternativeRaftPostgresT$fMonadPlusRaftPostgresT$fMonadTransRaftPostgresT$fShowEntryRow$fGenericEntryRow$fToRowEntryRow$fFromRowEntryRow $fShowPGError$fShowRaftPostgresError$fMonadMaskRaftPostgresT$fMonadThrowRaftPostgresT$fMonadCatchRaftPostgresTRaftPersistFileStoreTunRaftPersistFileStoreTRaftPersistFileRaftPersistFileStoreErrorrunRaftPersistFileStoreT$$fExceptionRaftPersistFileStoreError$$fMonadRaftForkRaftPersistFileStoreT%$fMonadRaftChanvRaftPersistFileStoreT%$fRaftDeleteLogRaftPersistFileStoreTv#$fRaftReadLogRaftPersistFileStoreTv$$fRaftWriteLogRaftPersistFileStoreTv#$fRaftInitLogRaftPersistFileStoreTv#$fRaftRecvRPCRaftPersistFileStoreTv#$fRaftSendRPCRaftPersistFileStoreTv&$fRaftRecvClientRaftPersistFileStoreTv($fRaftSendClientRaftPersistFileStoreTsmv*$fRaftStateMachineRaftPersistFileStoreTsmv"$fRaftPersistRaftPersistFileStoreT$fShowRaftPersistFileStoreError$fFunctorRaftPersistFileStoreT"$fApplicativeRaftPersistFileStoreT$fMonadRaftPersistFileStoreT$fMonadIORaftPersistFileStoreT $fMonadFailRaftPersistFileStoreT"$fMonadReaderRaftPersistFileStoreT"$fAlternativeRaftPersistFileStoreT $fMonadPlusRaftPersistFileStoreT!$fMonadTransRaftPersistFileStoreT $fMonadMaskRaftPersistFileStoreT!$fMonadCatchRaftPersistFileStoreT!$fMonadThrowRaftPersistFileStoreT SendRPCActionSendAppendEntriesRPCSendAppendEntriesResponseRPCSendRequestVoteRPCSendRequestVoteResponseRPCActionSendRPCSendRPCs BroadcastRPCAppendLogEntriesRespondToClientResetTimeoutTimerUpdateClientReqCacheFrom$fShowSendRPCAction $fShowActionClientReqHandlerTimeoutHandler TransitionM unTransitionM TransitionEnv nodeConfig stateMachine nodeState nodeMetrics tellAction tellActionsrunTransitionM askNodeIdaskPeerNodeIds broadcastsendresetElectionTimeoutresetHeartbeatTimeoutredirectClientToLeaderrespondClientReadrespondClientWriterespondClientMetricsrespondClientRedirappendLogEntriesupdateClientReqCacheFromIdx startElection$fRaftLoggervRWST&$fMonadStatePersistentStateTransitionM%$fMonadReaderTransitionEnvTransitionM$fMonadWriter[]TransitionM$fFunctorTransitionM$fApplicativeTransitionM$fMonadTransitionMhandleAppendEntrieshandleAppendEntriesResponsehandleRequestVotehandleRequestVoteResponse handleTimeouthandleClientReadRequesthandleClientWriteRequest RaftHandler handleEventfollowerRaftHandlercandidateRaftHandlerleaderRaftHandler mkRaftHandler handleEvent' runRaftNodehandleEventLoop hostPortToNidhostPortToNidBS nidToHostPort getFreePortrecvSerialized RaftSocketT unRaftSocketT NodeSocketEnv nsMsgQueuensClientReqQueuensClientReqRespsResponseSignal OkResponse DeadResponserunRaftSocketTacceptConnections$fMonadRaftForkRaftSocketT$fMonadRaftChanvRaftSocketT $fRaftStateMachineRaftSocketTsmv$fRaftDeleteLogRaftSocketTv$fRaftReadLogRaftSocketTv$fRaftWriteLogRaftSocketTv$fRaftInitLogRaftSocketTv$fRaftPersistRaftSocketT$fRaftRecvRPCRaftSocketTv$fRaftSendRPCRaftSocketTv$fRaftRecvClientRaftSocketTv$fRaftSendClientRaftSocketTsmv$fFunctorRaftSocketT$fApplicativeRaftSocketT$fMonadRaftSocketT$fMonadIORaftSocketT$fMonadFailRaftSocketT$fMonadReaderRaftSocketT$fAlternativeRaftSocketT$fMonadPlusRaftSocketT$fMonadTransRaftSocketT$fMonadMaskRaftSocketT$fMonadCatchRaftSocketT$fMonadThrowRaftSocketTRaftSocketClientMRaftClientRespChanTunRaftClientRespChanTClientRespChanclientRespChannewClientRespChanrunRaftSocketClientMsocketClientReadsocketClientWrite%$fRaftClientRecvRaftClientRespChanTsv$$fRaftClientSendRaftClientRespChanTv#$fMonadExceptionRaftClientRespChanT'$fMonadBaseControlIORaftClientRespChanT&$fMonadTransControlRaftClientRespChanT$fMonadTransRaftClientRespChanT$fFunctorRaftClientRespChanT $fApplicativeRaftClientRespChanT$fMonadRaftClientRespChanT$fMonadIORaftClientRespChanT $fMonadReaderRaftClientRespChanT $fAlternativeRaftClientRespChanT$fMonadPlusRaftClientRespChanT$fMonadMaskRaftClientRespChanT$fMonadCatchRaftClientRespChanT$fMonadThrowRaftClientRespChanT$fMonadSTMRaftClientRespChanT$fMonadBaseRaftClientRespChanTRaftLogFileStoreTunRaftLogFileStoreT RaftLogFile unRaftLogFileRaftLogFileStoreErrorrunRaftLogFileStoreTreadLogEntries $fExceptionRaftLogFileStoreError $fMonadRaftForkRaftLogFileStoreT!$fMonadRaftChanvRaftLogFileStoreT&$fRaftStateMachineRaftLogFileStoreTsmv"$fRaftRecvClientRaftLogFileStoreTv$$fRaftSendClientRaftLogFileStoreTsmv$fRaftRecvRPCRaftLogFileStoreTv$fRaftSendRPCRaftLogFileStoreTv$fRaftPersistRaftLogFileStoreT!$fRaftDeleteLogRaftLogFileStoreTv$fRaftReadLogRaftLogFileStoreTv $fRaftWriteLogRaftLogFileStoreTv$fRaftInitLogRaftLogFileStoreTv$fShowRaftLogFileStoreError$fFunctorRaftLogFileStoreT$fApplicativeRaftLogFileStoreT$fMonadRaftLogFileStoreT$fMonadIORaftLogFileStoreT$fMonadFailRaftLogFileStoreT$fMonadReaderRaftLogFileStoreT$fAlternativeRaftLogFileStoreT$fMonadPlusRaftLogFileStoreT$fMonadTransRaftLogFileStoreT$fMonadMaskRaftLogFileStoreT$fMonadCatchRaftLogFileStoreT$fMonadThrowRaftLogFileStoreT timerAsync timerLockversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName validateLogreadEntriesByIndicesclientSendWriteTo clientSendToclientSendRandomclientRecvWriteclientRecvReadclientRecvMetricswithRaftPostgresConn raftSchemacreateEntriesTableincrCommitIndexmkAppendEntriesDatahandleClientRequest handleActions rpcHandlerclientReqHandlerelectionTimeoutTimerheartbeatTimeoutTimer