const maxLearners …
type RaftCluster …
type ConfigChangeContext …
type ShouldApplyV3 …
const ApplyBoth …
const ApplyV2storeOnly …
func NewClusterFromURLsMap(lg *zap.Logger, token string, urlsmap types.URLsMap) (*RaftCluster, error) { … }
func NewClusterFromMembers(lg *zap.Logger, id types.ID, membs []*Member) *RaftCluster { … }
func NewCluster(lg *zap.Logger) *RaftCluster { … }
func (c *RaftCluster) ID() types.ID { … }
func (c *RaftCluster) Members() []*Member { … }
func (c *RaftCluster) Member(id types.ID) *Member { … }
func (c *RaftCluster) VotingMembers() []*Member { … }
func (c *RaftCluster) MemberByName(name string) *Member { … }
func (c *RaftCluster) MemberIDs() []types.ID { … }
func (c *RaftCluster) IsIDRemoved(id types.ID) bool { … }
func (c *RaftCluster) PeerURLs() []string { … }
func (c *RaftCluster) ClientURLs() []string { … }
func (c *RaftCluster) String() string { … }
func (c *RaftCluster) genID() { … }
func (c *RaftCluster) SetID(localID, cid types.ID) { … }
func (c *RaftCluster) SetStore(st v2store.Store) { … }
func (c *RaftCluster) SetBackend(be backend.Backend) { … }
func (c *RaftCluster) Recover(onSet func(*zap.Logger, *semver.Version)) { … }
func (c *RaftCluster) ValidateConfigurationChange(cc raftpb.ConfChange) error { … }
func (c *RaftCluster) AddMember(m *Member, shouldApplyV3 ShouldApplyV3) { … }
func (c *RaftCluster) RemoveMember(id types.ID, shouldApplyV3 ShouldApplyV3) { … }
func (c *RaftCluster) UpdateAttributes(id types.ID, attr Attributes, shouldApplyV3 ShouldApplyV3) { … }
func (c *RaftCluster) PromoteMember(id types.ID, shouldApplyV3 ShouldApplyV3) { … }
func (c *RaftCluster) UpdateRaftAttributes(id types.ID, raftAttr RaftAttributes, shouldApplyV3 ShouldApplyV3) { … }
func (c *RaftCluster) Version() *semver.Version { … }
func (c *RaftCluster) SetVersion(ver *semver.Version, onSet func(*zap.Logger, *semver.Version), shouldApplyV3 ShouldApplyV3) { … }
func (c *RaftCluster) IsReadyToAddVotingMember() bool { … }
func (c *RaftCluster) IsReadyToRemoveVotingMember(id uint64) bool { … }
func (c *RaftCluster) IsReadyToPromoteMember(id uint64) bool { … }
func membersFromStore(lg *zap.Logger, st v2store.Store) (map[types.ID]*Member, map[types.ID]bool) { … }
func membersFromBackend(lg *zap.Logger, be backend.Backend) (map[types.ID]*Member, map[types.ID]bool) { … }
func clusterVersionFromStore(lg *zap.Logger, st v2store.Store) *semver.Version { … }
func clusterVersionFromBackend(lg *zap.Logger, be backend.Backend) *semver.Version { … }
func downgradeInfoFromBackend(lg *zap.Logger, be backend.Backend) *DowngradeInfo { … }
func ValidateClusterAndAssignIDs(lg *zap.Logger, local *RaftCluster, existing *RaftCluster) error { … }
func IsValidVersionChange(cv *semver.Version, lv *semver.Version) bool { … }
func (c *RaftCluster) IsLocalMemberLearner() bool { … }
func (c *RaftCluster) DowngradeInfo() *DowngradeInfo { … }
func (c *RaftCluster) SetDowngradeInfo(d *DowngradeInfo, shouldApplyV3 ShouldApplyV3) { … }
func (c *RaftCluster) IsMemberExist(id types.ID) bool { … }
func (c *RaftCluster) VotingMemberIDs() []types.ID { … }
func (c *RaftCluster) PushMembershipToStorage() { … }