Documentation ¶
Index ¶
- Constants
- Variables
- func AddrSliceToMap(addrSlice *ps.ServerAddressSlice) map[*ps.ServerAddress]Peer
- func AddrsString(addrs []*ps.ServerAddress) []string
- func DispatchInconsistantError(localHSM *LocalHSM) error
- func DispatchPushConfigError(localHSM *LocalHSM, logIndex uint64) error
- func EntriesInfo(entries []*ps.LogEntry) []string
- func GetPeers(localAddr *ps.ServerAddress, conf *ps.Config) *ps.ServerAddressSlice
- func MapSetMinus(s1 map[*ps.ServerAddress]Peer, s2 map[*ps.ServerAddress]Peer) []*ps.ServerAddress
- func Max(a, b uint64) uint64
- func Min(a, b uint64) uint64
- func ParallelClose(closers []io.Closer)
- func ParallelDo(todo []func())
- func RandomLessDuration(d time.Duration, maxJitter float32) time.Duration
- func TimeExpire(lastTime time.Time, timeout time.Duration) bool
- type ActivatedPeerState
- func (self *ActivatedPeerState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *ActivatedPeerState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *ActivatedPeerState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*ActivatedPeerState) ID() string
- func (self *ActivatedPeerState) Init(sm hsm.HSM, event hsm.Event) (state hsm.State)
- type Applier
- func (self *Applier) ApplyCommitted()
- func (self *Applier) ApplyInflightLog(entry *InflightEntry)
- func (self *Applier) ApplyLogEntry(entry *ps.LogEntry) (result []byte, err error)
- func (self *Applier) ApplyLogsUpto(index uint64)
- func (self *Applier) Close()
- func (self *Applier) FollowerCommitUpTo(logIndex uint64)
- func (self *Applier) LeaderCommit(entry *InflightEntry)
- func (self *Applier) Start()
- type Backend
- type CandidatePeerState
- func (self *CandidatePeerState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *CandidatePeerState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *CandidatePeerState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*CandidatePeerState) ID() string
- func (self *CandidatePeerState) Init(sm hsm.HSM, event hsm.Event) (state hsm.State)
- type CandidateState
- func (self *CandidateState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *CandidateState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *CandidateState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*CandidateState) ID() string
- func (self *CandidateState) LastElectionTime() time.Time
- func (self *CandidateState) StartElection(localHSM *LocalHSM)
- func (self *CandidateState) UpdateLastElectionTime()
- type Client
- type ClientEventListener
- type CommitCondition
- type Configuration
- type DeactivatedPeerState
- func (self *DeactivatedPeerState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *DeactivatedPeerState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *DeactivatedPeerState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*DeactivatedPeerState) ID() string
- func (self *DeactivatedPeerState) Init(sm hsm.HSM, event hsm.Event) (state hsm.State)
- type EventChannel
- type FollowerMemberChangeState
- func (self *FollowerMemberChangeState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *FollowerMemberChangeState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *FollowerMemberChangeState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*FollowerMemberChangeState) ID() string
- type FollowerNewConfigSeenState
- func (self *FollowerNewConfigSeenState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *FollowerNewConfigSeenState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *FollowerNewConfigSeenState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*FollowerNewConfigSeenState) ID() string
- type FollowerOldNewConfigCommittedState
- func (self *FollowerOldNewConfigCommittedState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *FollowerOldNewConfigCommittedState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *FollowerOldNewConfigCommittedState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*FollowerOldNewConfigCommittedState) ID() string
- type FollowerOldNewConfigSeenState
- func (self *FollowerOldNewConfigSeenState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *FollowerOldNewConfigSeenState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *FollowerOldNewConfigSeenState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*FollowerOldNewConfigSeenState) ID() string
- type FollowerState
- func (self *FollowerState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *FollowerState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *FollowerState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *FollowerState) HandleAppendEntriesRequest(localHSM *LocalHSM, request *ev.AppendEntriesRequest, lastLogIndex uint64) *ev.AppendEntriesResponse
- func (self *FollowerState) HandleRequestVoteRequest(localHSM *LocalHSM, request *ev.RequestVoteRequest) *ev.RequestVoteResponse
- func (*FollowerState) ID() string
- func (self *FollowerState) LastContactTime() time.Time
- func (self *FollowerState) UpdateLastContact(localHSM *LocalHSM)
- func (self *FollowerState) UpdateLastContactTime()
- type HSMBackend
- type InavaliableResponseHandler
- type Inflight
- func (self *Inflight) Add(request *InflightRequest) error
- func (self *Inflight) AddAll(toCommits []*InflightEntry) error
- func (self *Inflight) ChangeMember(conf *ps.Config)
- func (self *Inflight) GetCommitted() []*InflightEntry
- func (self *Inflight) Init()
- func (self *Inflight) Replicate(addr ps.MultiAddr, newMatchIndex uint64) (bool, error)
- type InflightEntry
- type InflightRequest
- type LeaderInMemberChangeState
- func (self *LeaderInMemberChangeState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderInMemberChangeState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderInMemberChangeState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*LeaderInMemberChangeState) ID() string
- func (self *LeaderInMemberChangeState) Init(sm hsm.HSM, event hsm.Event) (state hsm.State)
- type LeaderMemberChangeActivatedState
- func (self *LeaderMemberChangeActivatedState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderMemberChangeActivatedState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderMemberChangeActivatedState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*LeaderMemberChangeActivatedState) ID() string
- func (self *LeaderMemberChangeActivatedState) Init(sm hsm.HSM, event hsm.Event) (state hsm.State)
- type LeaderMemberChangeDeactivatedState
- func (self *LeaderMemberChangeDeactivatedState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderMemberChangeDeactivatedState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderMemberChangeDeactivatedState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*LeaderMemberChangeDeactivatedState) ID() string
- type LeaderMemberChangeHSM
- func (self *LeaderMemberChangeHSM) Dispatch(event hsm.Event)
- func (self *LeaderMemberChangeHSM) Init()
- func (self *LeaderMemberChangeHSM) QTran(targetStateID string)
- func (self *LeaderMemberChangeHSM) QTranOnEvent(targetStateID string, event hsm.Event)
- func (self *LeaderMemberChangeHSM) SetLeaderState(leaderState *LeaderState)
- func (self *LeaderMemberChangeHSM) SetLocalHSM(localHSM *LocalHSM)
- type LeaderMemberChangePhase1State
- func (self *LeaderMemberChangePhase1State) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderMemberChangePhase1State) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderMemberChangePhase1State) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*LeaderMemberChangePhase1State) ID() string
- type LeaderMemberChangePhase2State
- func (self *LeaderMemberChangePhase2State) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderMemberChangePhase2State) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderMemberChangePhase2State) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*LeaderMemberChangePhase2State) ID() string
- type LeaderMemberChangeState
- func (self *LeaderMemberChangeState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderMemberChangeState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderMemberChangeState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*LeaderMemberChangeState) ID() string
- func (self *LeaderMemberChangeState) Init(sm hsm.HSM, event hsm.Event) (state hsm.State)
- type LeaderNotInMemberChangeState
- func (self *LeaderNotInMemberChangeState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderNotInMemberChangeState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderNotInMemberChangeState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*LeaderNotInMemberChangeState) ID() string
- type LeaderPeerState
- func (self *LeaderPeerState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderPeerState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderPeerState) GetIndexInfo() (uint64, uint64)
- func (self *LeaderPeerState) GetMatchIndexUpdated() bool
- func (self *LeaderPeerState) GetTerm() uint64
- func (self *LeaderPeerState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderPeerState) HandleAppendEntriesResponse(local Local, peerHSM *PeerHSM, response *ev.AppendEntriesResponse)
- func (*LeaderPeerState) ID() string
- func (self *LeaderPeerState) LastContactTime() time.Time
- func (self *LeaderPeerState) SetMatchIndex(index uint64)
- func (self *LeaderPeerState) SetMatchIndexUpdated(v bool)
- func (self *LeaderPeerState) SetTerm(term uint64)
- func (self *LeaderPeerState) UpdateLastContact()
- func (self *LeaderPeerState) UpdateLastContactTime()
- type LeaderState
- func (self *LeaderState) CommitInflightEntries(localHSM *LocalHSM, entries []*InflightEntry) error
- func (self *LeaderState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderState) HandleClientRequest(localHSM *LocalHSM, requestData []byte, resultChan chan ev.Event)
- func (*LeaderState) ID() string
- func (self *LeaderState) Init(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LeaderState) StartFlight(localHSM *LocalHSM, logType ps.LogType, logData []byte, ...) error
- type Local
- type LocalHSM
- func (self *LocalHSM) CommitInflightLog(entry *InflightEntry) error
- func (self *LocalHSM) CommitLogsUpTo(index uint64) error
- func (self *LocalHSM) ConfigManager() ps.ConfigManager
- func (self *LocalHSM) Dispatch(event hsm.Event)
- func (self *LocalHSM) GetCurrentTerm() uint64
- func (self *LocalHSM) GetLeader() *ps.ServerAddress
- func (self *LocalHSM) GetLocalAddr() *ps.ServerAddress
- func (self *LocalHSM) GetMemberChangeStatus() MemberChangeStatusType
- func (self *LocalHSM) GetVotedFor() *ps.ServerAddress
- func (self *LocalHSM) Init()
- func (self *LocalHSM) Log() ps.Log
- func (self *LocalHSM) Notifier() *Notifier
- func (self *LocalHSM) Peers() Peers
- func (self *LocalHSM) QTran(targetStateID string)
- func (self *LocalHSM) QTranOnEvent(targetStateID string, event hsm.Event)
- func (self *LocalHSM) SelfDispatch(event hsm.Event)
- func (self *LocalHSM) SendMemberChangeNotify() error
- func (self *LocalHSM) SetApplier(applier *Applier)
- func (self *LocalHSM) SetCurrentTerm(term uint64)
- func (self *LocalHSM) SetCurrentTermWithNotify(term uint64)
- func (self *LocalHSM) SetLeader(leader *ps.ServerAddress)
- func (self *LocalHSM) SetLeaderWithNotify(leader *ps.ServerAddress)
- func (self *LocalHSM) SetLocalAddr(addr *ps.ServerAddress)
- func (self *LocalHSM) SetMemberChangeStatus(status MemberChangeStatusType)
- func (self *LocalHSM) SetPeers(peers Peers)
- func (self *LocalHSM) SetVotedFor(votedFor *ps.ServerAddress)
- func (self *LocalHSM) StateMachine() ps.StateMachine
- func (self *LocalHSM) Terminate()
- type LocalManager
- func (self *LocalManager) Close() error
- func (self *LocalManager) ConfigManager() ps.ConfigManager
- func (self *LocalManager) GetCurrentTerm() uint64
- func (self *LocalManager) GetLeader() *ps.ServerAddress
- func (self *LocalManager) GetLocalAddr() *ps.ServerAddress
- func (self *LocalManager) GetVotedFor() *ps.ServerAddress
- func (self *LocalManager) Log() ps.Log
- func (self *LocalManager) Notifier() *Notifier
- func (self *LocalManager) QueryState() string
- func (self *LocalManager) Send(event hsm.Event)
- func (self *LocalManager) SendPrior(event hsm.Event)
- func (self *LocalManager) SetPeers(peers Peers)
- func (self *LocalManager) StateMachine() ps.StateMachine
- type LocalState
- func (self *LocalState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LocalState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *LocalState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*LocalState) ID() string
- func (self *LocalState) Init(sm hsm.HSM, event hsm.Event) (state hsm.State)
- type LogState
- type LogStateHead
- type MajorityCommitCondition
- type MemberChangeCommitCondition
- type MemberChangeStatusType
- type NeedPeersState
- type Node
- type Notifiable
- type NotifiableHSM
- type Notifier
- type Peer
- type PeerHSM
- func (self *PeerHSM) Addr() *ps.ServerAddress
- func (self *PeerHSM) Client() cm.Client
- func (self *PeerHSM) Dispatch(event hsm.Event)
- func (self *PeerHSM) EventHandler() cm.EventHandler
- func (self *PeerHSM) Init()
- func (self *PeerHSM) Local() Local
- func (self *PeerHSM) QTran(targetStateID string)
- func (self *PeerHSM) SelfDispatch(event hsm.Event)
- func (self *PeerHSM) Terminate()
- type PeerMan
- type PeerManager
- type PeerState
- func (self *PeerState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *PeerState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *PeerState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*PeerState) ID() string
- func (self *PeerState) Init(sm hsm.HSM, event hsm.Event) (state hsm.State)
- type Peers
- type PersistErrorPeerState
- func (self *PersistErrorPeerState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *PersistErrorPeerState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *PersistErrorPeerState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*PersistErrorPeerState) ID() string
- type PersistErrorState
- type PipelineModePeerState
- func (self *PipelineModePeerState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *PipelineModePeerState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *PipelineModePeerState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*PipelineModePeerState) ID() string
- type RaftNode
- type RandomTicker
- type RedirectClient
- func (self *RedirectClient) Append(data []byte) (result []byte, err error)
- func (self *RedirectClient) ChangeConfig(conf *ps.Config) error
- func (self *RedirectClient) Close() error
- func (self *RedirectClient) GetConfig() (conf *ps.Config, err error)
- func (self *RedirectClient) ReadOnly(data []byte) (result []byte, err error)
- func (self *RedirectClient) Start() error
- type RedirectResponseHandler
- type ReliableEventChannel
- func (self *ReliableEventChannel) Close()
- func (self *ReliableEventChannel) GetInChan() chan<- hsm.Event
- func (self *ReliableEventChannel) GetOutChan() <-chan hsm.Event
- func (self *ReliableEventChannel) Recv() hsm.Event
- func (self *ReliableEventChannel) Send(event hsm.Event)
- func (self *ReliableEventChannel) Start()
- type ReliableInflightEntryChannel
- func (self *ReliableInflightEntryChannel) Close()
- func (self *ReliableInflightEntryChannel) GetInChan() chan<- *InflightEntry
- func (self *ReliableInflightEntryChannel) GetOutChan() <-chan *InflightEntry
- func (self *ReliableInflightEntryChannel) Recv() *InflightEntry
- func (self *ReliableInflightEntryChannel) Send(entry *InflightEntry)
- func (self *ReliableInflightEntryChannel) Start()
- type ReliableUint64Channel
- func (self *ReliableUint64Channel) Close()
- func (self *ReliableUint64Channel) GetInChan() chan<- uint64
- func (self *ReliableUint64Channel) GetOutChan() <-chan uint64
- func (self *ReliableUint64Channel) Recv() uint64
- func (self *ReliableUint64Channel) Send(in uint64)
- func (self *ReliableUint64Channel) Start()
- type SelfDispatchHSM
- type SimpleClient
- func (self *SimpleClient) Append(data []byte) (result []byte, err error)
- func (self *SimpleClient) ChangeConfig(conf *ps.Config) error
- func (self *SimpleClient) Close() error
- func (self *SimpleClient) GetConfig() (conf *ps.Config, err error)
- func (self *SimpleClient) ReadOnly(data []byte) (result []byte, err error)
- type SimpleTicker
- type SnapshotInfo
- type SnapshotModePeerState
- func (self *SnapshotModePeerState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *SnapshotModePeerState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *SnapshotModePeerState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*SnapshotModePeerState) ID() string
- func (self *SnapshotModePeerState) SendNextChunk(peerHSM *PeerHSM, term uint64, leader *ps.ServerAddress) error
- func (self *SnapshotModePeerState) SetupRequest(term uint64, leader *ps.ServerAddress) hsm.Event
- type SnapshotRecoveryState
- func (self *SnapshotRecoveryState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *SnapshotRecoveryState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *SnapshotRecoveryState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*SnapshotRecoveryState) ID() string
- type StandardModePeerState
- func (self *StandardModePeerState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *StandardModePeerState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *StandardModePeerState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*StandardModePeerState) ID() string
- func (self *StandardModePeerState) SetupNextAppendEntriesRequestEvent(local Local, prevLogTerm uint64, prevLogIndex uint64, fromIndex uint64) hsm.Event
- func (self *StandardModePeerState) SetupReplicating(peerHSM *PeerHSM) (event hsm.Event)
- type SyncState
- type TerminableHSM
- type Ticker
- type UnsyncState
- func (self *UnsyncState) Entry(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *UnsyncState) Exit(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *UnsyncState) Handle(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (*UnsyncState) ID() string
- func (self *UnsyncState) Init(sm hsm.HSM, event hsm.Event) (state hsm.State)
- func (self *UnsyncState) StartSync(localHSM *LocalHSM) error
- func (self *UnsyncState) StartSyncSafe(localHSM *LocalHSM)
Constants ¶
View Source
const ( HSMTypeLocal hsm.HSMType = hsm.HSMTypeStd + 1 + iota HSMTypePeer HSMTypeLeaderMemberChange )
View Source
const ( StateLocalID = "local" StateFollowerID = "follower" StateSnapshotRecoveryID = "snapshot_recovery" StateFollowerMemberChangeID = "follower_member_change" StateFollowerOldNewConfigSeenID = "follower_old_new_config_seen" StateFollowerOldNewConfigCommittedID = "follower_old_new_config_committed" StateFollowerNewConfigSeenID = "follower_new_config_seen" StateNeedPeersID = "need_peers" StateCandidateID = "candidate" StateLeaderID = "leader" StateUnsyncID = "unsync" StateSyncID = "sync" StatePersistErrorID = "persist_error" )
View Source
const ( StatePeerID = "peer" StateDeactivatedPeerID = "deactivated_peer" StateActivatedPeerID = "activated_peer" StateCandidatePeerID = "candidate_peer" StateLeaderPeerID = "leader_peer" StateStandardModePeerID = "standard_mode_peer" StateSnapshotModePeerID = "snapshot_mode_peer" StatePipelineModePeerID = "pipeline_mode_peer" StatePersistErrorPeerID = "persist_error_peer" )
View Source
const ( StateLeaderMemberChangeID = "leader_member_change" StateLeaderMemberChangeDeactivatedID = "leader_member_change_deactivated" StateLeaderMemberChangeActivatedID = "leader_member_change_activated" StateLeaderNotInMemberChangeID = "leader_not_in_member_change" StateLeaderInMemberChangeID = "leader_in_member_change" StateLeaderMemberChangePhase1ID = "leader_member_change_phase1" StateLeaderMemberChangePhase2ID = "leader_member_change_phase2" )
Variables ¶
View Source
var ( Success error = nil Failure = errors.New("failure") Timeout = errors.New("timeout") LeaderUnsync = errors.New("leader unsync") LeaderUnknown = errors.New("leader Unknown") InMemberChange = errors.New("in member change") PersistError = errors.New("persist error") InvalidResponseType = errors.New("invalid response type") )
Functions ¶
func AddrSliceToMap ¶
func AddrSliceToMap( addrSlice *ps.ServerAddressSlice) map[*ps.ServerAddress]Peer
func AddrsString ¶
func AddrsString(addrs []*ps.ServerAddress) []string
func DispatchPushConfigError ¶
func EntriesInfo ¶
func GetPeers ¶
func GetPeers( localAddr *ps.ServerAddress, conf *ps.Config) *ps.ServerAddressSlice
func MapSetMinus ¶
func MapSetMinus( s1 map[*ps.ServerAddress]Peer, s2 map[*ps.ServerAddress]Peer) []*ps.ServerAddress
MapSetMinus calculates the difference of two map, and returns the result of s1 - s2.
func ParallelClose ¶
func ParallelDo ¶
func ParallelDo(todo []func())
Types ¶
type ActivatedPeerState ¶
type ActivatedPeerState struct {
*LogStateHead
}
func NewActivatedPeerState ¶
func NewActivatedPeerState(super hsm.State, logger logging.Logger) *ActivatedPeerState
func (*ActivatedPeerState) ID ¶
func (*ActivatedPeerState) ID() string
type Applier ¶
type Applier struct {
// contains filtered or unexported fields
}
func NewApplier ¶
func (*Applier) ApplyCommitted ¶
func (self *Applier) ApplyCommitted()
func (*Applier) ApplyInflightLog ¶
func (self *Applier) ApplyInflightLog(entry *InflightEntry)
func (*Applier) ApplyLogEntry ¶
func (*Applier) ApplyLogsUpto ¶
func (*Applier) FollowerCommitUpTo ¶
func (*Applier) LeaderCommit ¶
func (self *Applier) LeaderCommit(entry *InflightEntry)
type Backend ¶
type Backend interface { Send(event ev.RequestEvent) io.Closer Notifiable }
type CandidatePeerState ¶
type CandidatePeerState struct {
*LogStateHead
}
func NewCandidatePeerState ¶
func NewCandidatePeerState(super hsm.State, logger logging.Logger) *CandidatePeerState
func (*CandidatePeerState) ID ¶
func (*CandidatePeerState) ID() string
type CandidateState ¶
type CandidateState struct { *LogStateHead // contains filtered or unexported fields }
func NewCandidateState ¶
func (*CandidateState) ID ¶
func (*CandidateState) ID() string
func (*CandidateState) LastElectionTime ¶
func (self *CandidateState) LastElectionTime() time.Time
func (*CandidateState) StartElection ¶
func (self *CandidateState) StartElection(localHSM *LocalHSM)
func (*CandidateState) UpdateLastElectionTime ¶
func (self *CandidateState) UpdateLastElectionTime()
type ClientEventListener ¶
type ClientEventListener struct {
// contains filtered or unexported fields
}
ClientEventListener is a a helper class for listening client response in independent go routine.
func NewClientEventListener ¶
func NewClientEventListener() *ClientEventListener
func (*ClientEventListener) GetChan ¶
func (self *ClientEventListener) GetChan() chan ev.Event
func (*ClientEventListener) Start ¶
func (self *ClientEventListener) Start(fn func(ev.Event))
func (*ClientEventListener) Stop ¶
func (self *ClientEventListener) Stop()
type CommitCondition ¶
type Configuration ¶
type Configuration struct { HeartbeatTimeout time.Duration ElectionTimeout time.Duration ElectionTimeoutThresholdPersent float64 MaxTimeoutJitter float32 PersistErrorNotifyTimeout time.Duration MaxAppendEntriesSize uint64 MaxSnapshotChunkSize uint64 CommClientTimeout time.Duration CommServerTimeout time.Duration CommPoolSize int ClientTimeout time.Duration RPCServerAuth *cm.RPCAuth RPCClientAuth *cm.RPCAuth }
func DefaultConfiguration ¶
func DefaultConfiguration() *Configuration
type DeactivatedPeerState ¶
type DeactivatedPeerState struct {
*LogStateHead
}
func NewDeactivatedPeerState ¶
func NewDeactivatedPeerState( super hsm.State, logger logging.Logger) *DeactivatedPeerState
func (*DeactivatedPeerState) ID ¶
func (*DeactivatedPeerState) ID() string
type EventChannel ¶
The general interface of event channel.
type FollowerMemberChangeState ¶
type FollowerMemberChangeState struct {
*LogStateHead
}
func NewFollowerMemberChangeState ¶
func NewFollowerMemberChangeState( super hsm.State, logger logging.Logger) *FollowerMemberChangeState
func (*FollowerMemberChangeState) ID ¶
func (*FollowerMemberChangeState) ID() string
type FollowerNewConfigSeenState ¶
type FollowerNewConfigSeenState struct {
*LogStateHead
}
func NewFollowerNewConfigSeenState ¶
func NewFollowerNewConfigSeenState( super hsm.State, logger logging.Logger) *FollowerNewConfigSeenState
func (*FollowerNewConfigSeenState) ID ¶
func (*FollowerNewConfigSeenState) ID() string
type FollowerOldNewConfigCommittedState ¶
type FollowerOldNewConfigCommittedState struct {
*LogStateHead
}
func NewFollowerOldNewConfigCommittedState ¶
func NewFollowerOldNewConfigCommittedState( super hsm.State, logger logging.Logger) *FollowerOldNewConfigCommittedState
func (*FollowerOldNewConfigCommittedState) ID ¶
func (*FollowerOldNewConfigCommittedState) ID() string
type FollowerOldNewConfigSeenState ¶
type FollowerOldNewConfigSeenState struct {
*LogStateHead
}
func NewFollowerOldNewConfigSeenState ¶
func NewFollowerOldNewConfigSeenState( super hsm.State, logger logging.Logger) *FollowerOldNewConfigSeenState
func (*FollowerOldNewConfigSeenState) ID ¶
func (*FollowerOldNewConfigSeenState) ID() string
type FollowerState ¶
type FollowerState struct { *LogStateHead // contains filtered or unexported fields }
func NewFollowerState ¶
func (*FollowerState) HandleAppendEntriesRequest ¶
func (self *FollowerState) HandleAppendEntriesRequest( localHSM *LocalHSM, request *ev.AppendEntriesRequest, lastLogIndex uint64) *ev.AppendEntriesResponse
func (*FollowerState) HandleRequestVoteRequest ¶
func (self *FollowerState) HandleRequestVoteRequest( localHSM *LocalHSM, request *ev.RequestVoteRequest) *ev.RequestVoteResponse
func (*FollowerState) ID ¶
func (*FollowerState) ID() string
func (*FollowerState) LastContactTime ¶
func (self *FollowerState) LastContactTime() time.Time
func (*FollowerState) UpdateLastContact ¶
func (self *FollowerState) UpdateLastContact(localHSM *LocalHSM)
func (*FollowerState) UpdateLastContactTime ¶
func (self *FollowerState) UpdateLastContactTime()
type HSMBackend ¶
type HSMBackend struct {
// contains filtered or unexported fields
}
func NewHSMBackend ¶
func NewHSMBackend( config *Configuration, localAddr *ps.ServerAddress, bindAddr *ps.ServerAddress, configManager ps.ConfigManager, stateMachine ps.StateMachine, log ps.Log, logger logging.Logger) (*HSMBackend, error)
func (*HSMBackend) Close ¶
func (self *HSMBackend) Close() error
func (*HSMBackend) GetNotifyChan ¶
func (self *HSMBackend) GetNotifyChan() <-chan ev.NotifyEvent
func (*HSMBackend) Send ¶
func (self *HSMBackend) Send(event ev.RequestEvent)
type Inflight ¶
type Inflight struct { MaxIndex uint64 ToCommitEntries []*InflightEntry CommittedEntries []*InflightEntry ServerMatchIndexes map[ps.MultiAddr]uint64 sync.Mutex }
func NewInflight ¶
func (*Inflight) Add ¶
func (self *Inflight) Add(request *InflightRequest) error
func (*Inflight) AddAll ¶
func (self *Inflight) AddAll(toCommits []*InflightEntry) error
func (*Inflight) ChangeMember ¶
func (*Inflight) GetCommitted ¶
func (self *Inflight) GetCommitted() []*InflightEntry
type InflightEntry ¶
type InflightEntry struct { Request *InflightRequest Condition CommitCondition }
func NewInflightEntry ¶
func NewInflightEntry(request *InflightRequest) *InflightEntry
type InflightRequest ¶
type LeaderInMemberChangeState ¶
type LeaderInMemberChangeState struct {
*LogStateHead
}
func NewLeaderInMemberChangeState ¶
func NewLeaderInMemberChangeState( super hsm.State, logger logging.Logger) *LeaderInMemberChangeState
func (*LeaderInMemberChangeState) ID ¶
func (*LeaderInMemberChangeState) ID() string
type LeaderMemberChangeActivatedState ¶
type LeaderMemberChangeActivatedState struct {
*LogStateHead
}
func NewLeaderMemberChangeActivatedState ¶
func NewLeaderMemberChangeActivatedState( super hsm.State, logger logging.Logger) *LeaderMemberChangeActivatedState
func (*LeaderMemberChangeActivatedState) ID ¶
func (*LeaderMemberChangeActivatedState) ID() string
type LeaderMemberChangeDeactivatedState ¶
type LeaderMemberChangeDeactivatedState struct {
*LogStateHead
}
func NewLeaderMemberChangeDeactivatedState ¶
func NewLeaderMemberChangeDeactivatedState( super hsm.State, logger logging.Logger) *LeaderMemberChangeDeactivatedState
func (*LeaderMemberChangeDeactivatedState) ID ¶
func (*LeaderMemberChangeDeactivatedState) ID() string
type LeaderMemberChangeHSM ¶
type LeaderMemberChangeHSM struct { *hsm.StdHSM LeaderState *LeaderState LocalHSM *LocalHSM }
func NewLeaderMemberChangeHSM ¶
func NewLeaderMemberChangeHSM( top hsm.State, initial hsm.State) *LeaderMemberChangeHSM
func SetupLeaderMemberChangeHSM ¶
func SetupLeaderMemberChangeHSM(logger logging.Logger) *LeaderMemberChangeHSM
func (*LeaderMemberChangeHSM) Dispatch ¶
func (self *LeaderMemberChangeHSM) Dispatch(event hsm.Event)
func (*LeaderMemberChangeHSM) Init ¶
func (self *LeaderMemberChangeHSM) Init()
func (*LeaderMemberChangeHSM) QTran ¶
func (self *LeaderMemberChangeHSM) QTran(targetStateID string)
func (*LeaderMemberChangeHSM) QTranOnEvent ¶
func (self *LeaderMemberChangeHSM) QTranOnEvent( targetStateID string, event hsm.Event)
func (*LeaderMemberChangeHSM) SetLeaderState ¶
func (self *LeaderMemberChangeHSM) SetLeaderState(leaderState *LeaderState)
func (*LeaderMemberChangeHSM) SetLocalHSM ¶
func (self *LeaderMemberChangeHSM) SetLocalHSM(localHSM *LocalHSM)
type LeaderMemberChangePhase1State ¶
type LeaderMemberChangePhase1State struct {
*LogStateHead
}
func NewLeaderMemberChangePhase1State ¶
func NewLeaderMemberChangePhase1State( super hsm.State, logger logging.Logger) *LeaderMemberChangePhase1State
func (*LeaderMemberChangePhase1State) ID ¶
func (*LeaderMemberChangePhase1State) ID() string
type LeaderMemberChangePhase2State ¶
type LeaderMemberChangePhase2State struct {
*LogStateHead
}
func NewLeaderMemberChangePhase2State ¶
func NewLeaderMemberChangePhase2State( super hsm.State, logger logging.Logger) *LeaderMemberChangePhase2State
func (*LeaderMemberChangePhase2State) ID ¶
func (*LeaderMemberChangePhase2State) ID() string
type LeaderMemberChangeState ¶
type LeaderMemberChangeState struct {
*LogStateHead
}
func NewLeaderMemberChangeState ¶
func NewLeaderMemberChangeState( super hsm.State, logger logging.Logger) *LeaderMemberChangeState
func (*LeaderMemberChangeState) ID ¶
func (*LeaderMemberChangeState) ID() string
type LeaderNotInMemberChangeState ¶
type LeaderNotInMemberChangeState struct {
*LogStateHead
}
func NewLeaderNotInMemberChangeState ¶
func NewLeaderNotInMemberChangeState( super hsm.State, logger logging.Logger) *LeaderNotInMemberChangeState
func (*LeaderNotInMemberChangeState) ID ¶
func (*LeaderNotInMemberChangeState) ID() string
type LeaderPeerState ¶
type LeaderPeerState struct { *LogStateHead // contains filtered or unexported fields }
func NewLeaderPeerState ¶
func (*LeaderPeerState) GetIndexInfo ¶
func (self *LeaderPeerState) GetIndexInfo() (uint64, uint64)
func (*LeaderPeerState) GetMatchIndexUpdated ¶
func (self *LeaderPeerState) GetMatchIndexUpdated() bool
func (*LeaderPeerState) GetTerm ¶
func (self *LeaderPeerState) GetTerm() uint64
func (*LeaderPeerState) HandleAppendEntriesResponse ¶
func (self *LeaderPeerState) HandleAppendEntriesResponse(local Local, peerHSM *PeerHSM, response *ev.AppendEntriesResponse)
func (*LeaderPeerState) ID ¶
func (*LeaderPeerState) ID() string
func (*LeaderPeerState) LastContactTime ¶
func (self *LeaderPeerState) LastContactTime() time.Time
func (*LeaderPeerState) SetMatchIndex ¶
func (self *LeaderPeerState) SetMatchIndex(index uint64)
func (*LeaderPeerState) SetMatchIndexUpdated ¶
func (self *LeaderPeerState) SetMatchIndexUpdated(v bool)
func (*LeaderPeerState) SetTerm ¶
func (self *LeaderPeerState) SetTerm(term uint64)
func (*LeaderPeerState) UpdateLastContact ¶
func (self *LeaderPeerState) UpdateLastContact()
func (*LeaderPeerState) UpdateLastContactTime ¶
func (self *LeaderPeerState) UpdateLastContactTime()
type LeaderState ¶
type LeaderState struct { *LogStateHead MemberChangeHSM *LeaderMemberChangeHSM Inflight *Inflight // contains filtered or unexported fields }
func NewLeaderState ¶
func NewLeaderState(super hsm.State, logger logging.Logger) *LeaderState
func (*LeaderState) CommitInflightEntries ¶
func (self *LeaderState) CommitInflightEntries( localHSM *LocalHSM, entries []*InflightEntry) error
func (*LeaderState) HandleClientRequest ¶
func (self *LeaderState) HandleClientRequest( localHSM *LocalHSM, requestData []byte, resultChan chan ev.Event)
func (*LeaderState) ID ¶
func (*LeaderState) ID() string
func (*LeaderState) StartFlight ¶
type Local ¶
type Local interface { Send(event hsm.Event) SendPrior(event hsm.Event) io.Closer QueryState() string GetCurrentTerm() uint64 GetLocalAddr() *ps.ServerAddress GetVotedFor() *ps.ServerAddress GetLeader() *ps.ServerAddress Log() ps.Log StateMachine() ps.StateMachine ConfigManager() ps.ConfigManager Notifier() *Notifier SetPeers(peers Peers) }
func NewLocalManager ¶
func NewLocalManager( config *Configuration, localAddr *ps.ServerAddress, log ps.Log, stateMachine ps.StateMachine, configManager ps.ConfigManager, logger logging.Logger) (Local, error)
type LocalHSM ¶
func NewLocalHSM ¶
func (*LocalHSM) CommitInflightLog ¶
func (self *LocalHSM) CommitInflightLog(entry *InflightEntry) error
func (*LocalHSM) CommitLogsUpTo ¶
func (*LocalHSM) ConfigManager ¶
func (self *LocalHSM) ConfigManager() ps.ConfigManager
func (*LocalHSM) GetCurrentTerm ¶
func (*LocalHSM) GetLeader ¶
func (self *LocalHSM) GetLeader() *ps.ServerAddress
func (*LocalHSM) GetLocalAddr ¶
func (self *LocalHSM) GetLocalAddr() *ps.ServerAddress
func (*LocalHSM) GetMemberChangeStatus ¶
func (self *LocalHSM) GetMemberChangeStatus() MemberChangeStatusType
func (*LocalHSM) GetVotedFor ¶
func (self *LocalHSM) GetVotedFor() *ps.ServerAddress
func (*LocalHSM) QTranOnEvent ¶
func (*LocalHSM) SelfDispatch ¶
func (*LocalHSM) SendMemberChangeNotify ¶
func (*LocalHSM) SetApplier ¶
func (*LocalHSM) SetCurrentTerm ¶
func (*LocalHSM) SetCurrentTermWithNotify ¶
func (*LocalHSM) SetLeader ¶
func (self *LocalHSM) SetLeader(leader *ps.ServerAddress)
func (*LocalHSM) SetLeaderWithNotify ¶
func (self *LocalHSM) SetLeaderWithNotify(leader *ps.ServerAddress)
func (*LocalHSM) SetLocalAddr ¶
func (self *LocalHSM) SetLocalAddr(addr *ps.ServerAddress)
func (*LocalHSM) SetMemberChangeStatus ¶
func (self *LocalHSM) SetMemberChangeStatus(status MemberChangeStatusType)
func (*LocalHSM) SetVotedFor ¶
func (self *LocalHSM) SetVotedFor(votedFor *ps.ServerAddress)
func (*LocalHSM) StateMachine ¶
func (self *LocalHSM) StateMachine() ps.StateMachine
type LocalManager ¶
type LocalManager struct {
// contains filtered or unexported fields
}
func (*LocalManager) Close ¶
func (self *LocalManager) Close() error
func (*LocalManager) ConfigManager ¶
func (self *LocalManager) ConfigManager() ps.ConfigManager
func (*LocalManager) GetCurrentTerm ¶
func (self *LocalManager) GetCurrentTerm() uint64
func (*LocalManager) GetLeader ¶
func (self *LocalManager) GetLeader() *ps.ServerAddress
func (*LocalManager) GetLocalAddr ¶
func (self *LocalManager) GetLocalAddr() *ps.ServerAddress
func (*LocalManager) GetVotedFor ¶
func (self *LocalManager) GetVotedFor() *ps.ServerAddress
func (*LocalManager) Log ¶
func (self *LocalManager) Log() ps.Log
func (*LocalManager) Notifier ¶
func (self *LocalManager) Notifier() *Notifier
func (*LocalManager) QueryState ¶
func (self *LocalManager) QueryState() string
func (*LocalManager) Send ¶
func (self *LocalManager) Send(event hsm.Event)
func (*LocalManager) SendPrior ¶
func (self *LocalManager) SendPrior(event hsm.Event)
func (*LocalManager) SetPeers ¶
func (self *LocalManager) SetPeers(peers Peers)
func (*LocalManager) StateMachine ¶
func (self *LocalManager) StateMachine() ps.StateMachine
type LocalState ¶
type LocalState struct {
*LogStateHead
}
func NewLocalState ¶
func NewLocalState(super hsm.State, logger logging.Logger) *LocalState
func (*LocalState) ID ¶
func (*LocalState) ID() string
type LogStateHead ¶
func NewLogStateHead ¶
func NewLogStateHead(super hsm.State, logger logging.Logger) *LogStateHead
type MajorityCommitCondition ¶
type MajorityCommitCondition struct { VoteStatus map[ps.MultiAddr]bool VoteCount uint32 MajoritySize uint32 }
func NewMajorityCommitCondition ¶
func NewMajorityCommitCondition( addrSlice *ps.ServerAddressSlice) *MajorityCommitCondition
func (*MajorityCommitCondition) AddVote ¶
func (self *MajorityCommitCondition) AddVote(addr ps.MultiAddr) error
func (*MajorityCommitCondition) IsCommitted ¶
func (self *MajorityCommitCondition) IsCommitted() bool
func (*MajorityCommitCondition) IsInCluster ¶
func (self *MajorityCommitCondition) IsInCluster(addr ps.MultiAddr) bool
type MemberChangeCommitCondition ¶
type MemberChangeCommitCondition struct { OldServersCommitCondition *MajorityCommitCondition NewServersCommitCondition *MajorityCommitCondition }
func NewMemberChangeCommitCondition ¶
func NewMemberChangeCommitCondition( conf *ps.Config) *MemberChangeCommitCondition
func (*MemberChangeCommitCondition) AddVote ¶
func (self *MemberChangeCommitCondition) AddVote(addr ps.MultiAddr) error
func (*MemberChangeCommitCondition) IsCommitted ¶
func (self *MemberChangeCommitCondition) IsCommitted() bool
type MemberChangeStatusType ¶
type MemberChangeStatusType uint8
const ( MemberChangeStatusNotSet MemberChangeStatusType = iota NotInMemeberChange OldNewConfigSeen OldNewConfigCommitted NewConfigSeen NewConfigCommitted )
func InitMemberChangeStatus ¶
func InitMemberChangeStatus( configManager ps.ConfigManager, log ps.Log) (MemberChangeStatusType, error)
type NeedPeersState ¶
type NeedPeersState struct {
*LogStateHead
}
func NewNeedPeersState ¶
func NewNeedPeersState(super hsm.State, logger logging.Logger) *NeedPeersState
func (*NeedPeersState) ID ¶
func (*NeedPeersState) ID() string
type Node ¶
type Node interface { Client Notifiable }
type Notifiable ¶
type Notifiable interface {
GetNotifyChan() <-chan ev.NotifyEvent
}
type NotifiableHSM ¶
type NotifiableHSM interface { hsm.HSM GetNotifyChan() <-chan ev.NotifyEvent }
type Notifier ¶
type Notifier struct {
// contains filtered or unexported fields
}
Notifier is use to signal notify to the outside of this module.
func NewNotifier ¶
func NewNotifier() *Notifier
func (*Notifier) GetNotifyChan ¶
func (self *Notifier) GetNotifyChan() <-chan ev.NotifyEvent
func (*Notifier) Notify ¶
func (self *Notifier) Notify(event ev.NotifyEvent)
type Peer ¶
type Peer interface { Send(Event hsm.Event) SendPrior(event hsm.Event) Close() QueryState() string }
func NewPeerMan ¶
func NewPeerMan( config *Configuration, addr *ps.ServerAddress, client cm.Client, local Local, logger logging.Logger) Peer
type PeerHSM ¶
func NewPeerHSM ¶
func (*PeerHSM) Addr ¶
func (self *PeerHSM) Addr() *ps.ServerAddress
func (*PeerHSM) EventHandler ¶
func (self *PeerHSM) EventHandler() cm.EventHandler
func (*PeerHSM) SelfDispatch ¶
type PeerMan ¶
type PeerMan struct {
// contains filtered or unexported fields
}
func (*PeerMan) QueryState ¶
type PeerManager ¶
type PeerManager struct {
// contains filtered or unexported fields
}
func NewPeerManager ¶
func (*PeerManager) AddPeers ¶
func (self *PeerManager) AddPeers(peerAddrSlice *ps.ServerAddressSlice)
func (*PeerManager) Broadcast ¶
func (self *PeerManager) Broadcast(event hsm.Event)
func (*PeerManager) Close ¶
func (self *PeerManager) Close() error
func (*PeerManager) RemovePeers ¶
func (self *PeerManager) RemovePeers(peerAddrSlice *ps.ServerAddressSlice)
type PeerState ¶
type PeerState struct {
*LogStateHead
}
type Peers ¶
type Peers interface { Broadcast(event hsm.Event) AddPeers(peerAddrSlice *ps.ServerAddressSlice) RemovePeers(peerAddrSlice *ps.ServerAddressSlice) io.Closer }
type PersistErrorPeerState ¶
type PersistErrorPeerState struct {
*LogStateHead
}
func NewPersistErrorPeerState ¶
func NewPersistErrorPeerState( super hsm.State, logger logging.Logger) *PersistErrorPeerState
func (*PersistErrorPeerState) ID ¶
func (*PersistErrorPeerState) ID() string
type PersistErrorState ¶
type PersistErrorState struct { *LogStateHead // contains filtered or unexported fields }
func NewPersistErrorState ¶
func (*PersistErrorState) ID ¶
func (*PersistErrorState) ID() string
type PipelineModePeerState ¶
type PipelineModePeerState struct {
*LogStateHead
}
func NewPipelineModePeerState ¶
func NewPipelineModePeerState( super hsm.State, logger logging.Logger) *PipelineModePeerState
func (*PipelineModePeerState) ID ¶
func (*PipelineModePeerState) ID() string
type RaftNode ¶
type RaftNode struct { *RedirectClient // contains filtered or unexported fields }
func NewRaftNode ¶
func NewRaftNode(backend *HSMBackend, client *RedirectClient) *RaftNode
func (*RaftNode) GetNotifyChan ¶
func (self *RaftNode) GetNotifyChan() <-chan ev.NotifyEvent
type RandomTicker ¶
type RandomTicker struct {
// contains filtered or unexported fields
}
func NewRandomTicker ¶
func NewRandomTicker(timeout time.Duration, maxJitter float32) *RandomTicker
func (*RandomTicker) Reset ¶
func (self *RandomTicker) Reset()
func (*RandomTicker) Start ¶
func (self *RandomTicker) Start(fn func())
func (*RandomTicker) Stop ¶
func (self *RandomTicker) Stop()
type RedirectClient ¶
type RedirectClient struct {
// contains filtered or unexported fields
}
func NewRedirectClient ¶
func (*RedirectClient) Append ¶
func (self *RedirectClient) Append(data []byte) (result []byte, err error)
func (*RedirectClient) ChangeConfig ¶
func (self *RedirectClient) ChangeConfig(conf *ps.Config) error
func (*RedirectClient) Close ¶
func (self *RedirectClient) Close() error
func (*RedirectClient) GetConfig ¶
func (self *RedirectClient) GetConfig() (conf *ps.Config, err error)
func (*RedirectClient) ReadOnly ¶
func (self *RedirectClient) ReadOnly(data []byte) (result []byte, err error)
func (*RedirectClient) Start ¶
func (self *RedirectClient) Start() error
type RedirectResponseHandler ¶
type RedirectResponseHandler func( *ev.LeaderRedirectResponseEvent, ev.RequestEvent) (ev.Event, error)
type ReliableEventChannel ¶
type ReliableEventChannel struct {
// contains filtered or unexported fields
}
ReliableEventChannel is an unlimited size channel for non-blocking event sending/receiving.
func NewReliableEventChannel ¶
func NewReliableEventChannel() *ReliableEventChannel
func (*ReliableEventChannel) Close ¶
func (self *ReliableEventChannel) Close()
func (*ReliableEventChannel) GetInChan ¶
func (self *ReliableEventChannel) GetInChan() chan<- hsm.Event
func (*ReliableEventChannel) GetOutChan ¶
func (self *ReliableEventChannel) GetOutChan() <-chan hsm.Event
func (*ReliableEventChannel) Recv ¶
func (self *ReliableEventChannel) Recv() hsm.Event
func (*ReliableEventChannel) Send ¶
func (self *ReliableEventChannel) Send(event hsm.Event)
func (*ReliableEventChannel) Start ¶
func (self *ReliableEventChannel) Start()
type ReliableInflightEntryChannel ¶
type ReliableInflightEntryChannel struct {
// contains filtered or unexported fields
}
func NewReliableInflightEntryChannel ¶
func NewReliableInflightEntryChannel() *ReliableInflightEntryChannel
func (*ReliableInflightEntryChannel) Close ¶
func (self *ReliableInflightEntryChannel) Close()
func (*ReliableInflightEntryChannel) GetInChan ¶
func (self *ReliableInflightEntryChannel) GetInChan() chan<- *InflightEntry
func (*ReliableInflightEntryChannel) GetOutChan ¶
func (self *ReliableInflightEntryChannel) GetOutChan() <-chan *InflightEntry
func (*ReliableInflightEntryChannel) Recv ¶
func (self *ReliableInflightEntryChannel) Recv() *InflightEntry
func (*ReliableInflightEntryChannel) Send ¶
func (self *ReliableInflightEntryChannel) Send(entry *InflightEntry)
func (*ReliableInflightEntryChannel) Start ¶
func (self *ReliableInflightEntryChannel) Start()
type ReliableUint64Channel ¶
type ReliableUint64Channel struct {
// contains filtered or unexported fields
}
ReliableUint64Channel is an unlimited size channel for non-blocking sending/receiving
func NewReliableUint64Channel ¶
func NewReliableUint64Channel() *ReliableUint64Channel
func (*ReliableUint64Channel) Close ¶
func (self *ReliableUint64Channel) Close()
func (*ReliableUint64Channel) GetInChan ¶
func (self *ReliableUint64Channel) GetInChan() chan<- uint64
func (*ReliableUint64Channel) GetOutChan ¶
func (self *ReliableUint64Channel) GetOutChan() <-chan uint64
func (*ReliableUint64Channel) Recv ¶
func (self *ReliableUint64Channel) Recv() uint64
func (*ReliableUint64Channel) Send ¶
func (self *ReliableUint64Channel) Send(in uint64)
func (*ReliableUint64Channel) Start ¶
func (self *ReliableUint64Channel) Start()
type SimpleClient ¶
type SimpleClient struct {
// contains filtered or unexported fields
}
func NewSimpleClient ¶
func (*SimpleClient) Append ¶
func (self *SimpleClient) Append(data []byte) (result []byte, err error)
func (*SimpleClient) ChangeConfig ¶
func (self *SimpleClient) ChangeConfig(conf *ps.Config) error
func (*SimpleClient) Close ¶
func (self *SimpleClient) Close() error
type SimpleTicker ¶
type SimpleTicker struct {
// contains filtered or unexported fields
}
func NewSimpleTicker ¶
func NewSimpleTicker(timeout time.Duration) *SimpleTicker
func (*SimpleTicker) Reset ¶
func (self *SimpleTicker) Reset()
func (*SimpleTicker) Start ¶
func (self *SimpleTicker) Start(fn func())
func (*SimpleTicker) Stop ¶
func (self *SimpleTicker) Stop()
type SnapshotInfo ¶
type SnapshotModePeerState ¶
type SnapshotModePeerState struct { *LogStateHead // contains filtered or unexported fields }
func (*SnapshotModePeerState) ID ¶
func (*SnapshotModePeerState) ID() string
func (*SnapshotModePeerState) SendNextChunk ¶
func (self *SnapshotModePeerState) SendNextChunk( peerHSM *PeerHSM, term uint64, leader *ps.ServerAddress) error
func (*SnapshotModePeerState) SetupRequest ¶
func (self *SnapshotModePeerState) SetupRequest( term uint64, leader *ps.ServerAddress) hsm.Event
type SnapshotRecoveryState ¶
type SnapshotRecoveryState struct { *LogStateHead // contains filtered or unexported fields }
func NewSnapshotRecoveryState ¶
func NewSnapshotRecoveryState( super hsm.State, logger logging.Logger) *SnapshotRecoveryState
func (*SnapshotRecoveryState) ID ¶
func (*SnapshotRecoveryState) ID() string
type StandardModePeerState ¶
type StandardModePeerState struct { *LogStateHead // contains filtered or unexported fields }
func (*StandardModePeerState) ID ¶
func (*StandardModePeerState) ID() string
func (*StandardModePeerState) SetupNextAppendEntriesRequestEvent ¶
func (*StandardModePeerState) SetupReplicating ¶
func (self *StandardModePeerState) SetupReplicating( peerHSM *PeerHSM) (event hsm.Event)
type SyncState ¶
type SyncState struct {
*LogStateHead
}
type TerminableHSM ¶
type UnsyncState ¶
type UnsyncState struct { *LogStateHead // contains filtered or unexported fields }
func NewUnsyncState ¶
func NewUnsyncState(super hsm.State, logger logging.Logger) *UnsyncState
func (*UnsyncState) ID ¶
func (*UnsyncState) ID() string
func (*UnsyncState) StartSync ¶
func (self *UnsyncState) StartSync(localHSM *LocalHSM) error
func (*UnsyncState) StartSyncSafe ¶
func (self *UnsyncState) StartSyncSafe(localHSM *LocalHSM)
Source Files ¶
Click to show internal directories.
Click to hide internal directories.