member

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 15, 2023 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ElectionLeader

type ElectionLeader interface {
	// GetListenUrls returns the listen urls
	GetListenUrls() []string
	// GetRevision the revision of the leader in etcd
	GetRevision() int64
	// String declares fmt.Stringer
	String() string
	// Watch on itself, the leader in the election group
	Watch(context.Context)
}

ElectionLeader defines the common interface of the leader, which is the pdpb.Member for in PD/API service or the tsopb.Participant in the microserives.

type EmbeddedEtcdLeader

type EmbeddedEtcdLeader struct {
	// contains filtered or unexported fields
}

EmbeddedEtcdLeader is the leader in the election group backed by the embedded etcd.

func (*EmbeddedEtcdLeader) GetListenUrls

func (l *EmbeddedEtcdLeader) GetListenUrls() []string

GetListenUrls returns current leader's client urls

func (*EmbeddedEtcdLeader) GetRevision

func (l *EmbeddedEtcdLeader) GetRevision() int64

GetRevision the revision of the leader in etcd

func (*EmbeddedEtcdLeader) String

func (l *EmbeddedEtcdLeader) String() string

String declares fmt.Stringer

func (*EmbeddedEtcdLeader) Watch

func (l *EmbeddedEtcdLeader) Watch(ctx context.Context)

Watch on the leader

type EmbeddedEtcdMember

type EmbeddedEtcdMember struct {
	// contains filtered or unexported fields
}

EmbeddedEtcdMember is used for the election related logic. It implements Member interface.

func NewMember

func NewMember(etcd *embed.Etcd, client *clientv3.Client, id uint64) *EmbeddedEtcdMember

NewMember create a new Member.

func (*EmbeddedEtcdMember) CampaignLeader

func (m *EmbeddedEtcdMember) CampaignLeader(leaseTimeout int64) error

CampaignLeader is used to campaign a PD member's leadership and make it become a PD leader.

func (*EmbeddedEtcdMember) CheckLeader

func (m *EmbeddedEtcdMember) CheckLeader() (ElectionLeader, bool)

CheckLeader checks if someone else is taking the leadership. If yes, returns the leader; otherwise returns a bool which indicates if it is needed to check later.

func (*EmbeddedEtcdMember) CheckPriority

func (m *EmbeddedEtcdMember) CheckPriority(ctx context.Context)

CheckPriority checks whether the etcd leader should be moved according to the priority.

func (*EmbeddedEtcdMember) Client

func (m *EmbeddedEtcdMember) Client() *clientv3.Client

Client returns the etcd client.

func (*EmbeddedEtcdMember) Close

func (m *EmbeddedEtcdMember) Close()

Close gracefully shuts down all servers/listeners.

func (*EmbeddedEtcdMember) DeleteMemberDCLocationInfo

func (m *EmbeddedEtcdMember) DeleteMemberDCLocationInfo(id uint64) error

DeleteMemberDCLocationInfo removes a member's dc-location info.

func (*EmbeddedEtcdMember) DeleteMemberLeaderPriority

func (m *EmbeddedEtcdMember) DeleteMemberLeaderPriority(id uint64) error

DeleteMemberLeaderPriority removes a member's etcd leader priority config.

func (*EmbeddedEtcdMember) EnableLeader

func (m *EmbeddedEtcdMember) EnableLeader()

EnableLeader sets the member itself to a PD leader.

func (*EmbeddedEtcdMember) Etcd

func (m *EmbeddedEtcdMember) Etcd() *embed.Etcd

Etcd returns etcd related information.

func (*EmbeddedEtcdMember) GetDCLocationPath

func (m *EmbeddedEtcdMember) GetDCLocationPath(id uint64) string

GetDCLocationPath returns the dc-location path of a member with the given member ID.

func (*EmbeddedEtcdMember) GetDCLocationPathPrefix

func (m *EmbeddedEtcdMember) GetDCLocationPathPrefix() string

GetDCLocationPathPrefix returns the dc-location path prefix of the cluster.

func (*EmbeddedEtcdMember) GetEtcdLeader

func (m *EmbeddedEtcdMember) GetEtcdLeader() uint64

GetEtcdLeader returns the etcd leader ID.

func (*EmbeddedEtcdMember) GetLastLeaderUpdatedTime

func (m *EmbeddedEtcdMember) GetLastLeaderUpdatedTime() time.Time

GetLastLeaderUpdatedTime returns the last time when the leader is updated.

func (*EmbeddedEtcdMember) GetLeader

func (m *EmbeddedEtcdMember) GetLeader() *pdpb.Member

GetLeader returns current PD leader of PD cluster.

func (*EmbeddedEtcdMember) GetLeaderID

func (m *EmbeddedEtcdMember) GetLeaderID() uint64

GetLeaderID returns current PD leader's member ID.

func (*EmbeddedEtcdMember) GetLeaderListenUrls

func (m *EmbeddedEtcdMember) GetLeaderListenUrls() []string

GetLeaderListenUrls returns current leader's listen urls

func (*EmbeddedEtcdMember) GetLeaderPath

func (m *EmbeddedEtcdMember) GetLeaderPath() string

GetLeaderPath returns the path of the PD leader.

func (*EmbeddedEtcdMember) GetLeadership

func (m *EmbeddedEtcdMember) GetLeadership() *election.Leadership

GetLeadership returns the leadership of the PD member.

func (*EmbeddedEtcdMember) GetMember

func (m *EmbeddedEtcdMember) GetMember() interface{}

GetMember returns the member.

func (*EmbeddedEtcdMember) GetMemberBinaryVersion

func (m *EmbeddedEtcdMember) GetMemberBinaryVersion(id uint64) (string, error)

GetMemberBinaryVersion loads a member's binary version.

func (*EmbeddedEtcdMember) GetMemberDeployPath

func (m *EmbeddedEtcdMember) GetMemberDeployPath(id uint64) (string, error)

GetMemberDeployPath loads a member's binary deploy path.

func (*EmbeddedEtcdMember) GetMemberGitHash

func (m *EmbeddedEtcdMember) GetMemberGitHash(id uint64) (string, error)

GetMemberGitHash loads a member's git hash.

func (*EmbeddedEtcdMember) GetMemberLeaderPriority

func (m *EmbeddedEtcdMember) GetMemberLeaderPriority(id uint64) (int, error)

GetMemberLeaderPriority loads a member's priority to be elected as the etcd leader.

func (*EmbeddedEtcdMember) ID

func (m *EmbeddedEtcdMember) ID() uint64

ID returns the unique etcd ID for this server in etcd cluster.

func (*EmbeddedEtcdMember) InitMemberInfo

func (m *EmbeddedEtcdMember) InitMemberInfo(advertiseClientUrls, advertisePeerUrls, name string, rootPath string)

InitMemberInfo initializes the member info.

func (*EmbeddedEtcdMember) IsLeader

func (m *EmbeddedEtcdMember) IsLeader() bool

IsLeader returns whether the server is PD leader or not by checking its leadership's lease and leader info.

func (*EmbeddedEtcdMember) IsLeaderElected

func (m *EmbeddedEtcdMember) IsLeaderElected() bool

IsLeaderElected returns true if the leader exists; otherwise false

func (*EmbeddedEtcdMember) IsSameLeader

func (m *EmbeddedEtcdMember) IsSameLeader(leader *pdpb.Member) bool

IsSameLeader checks whether a server is the leader itself.

func (*EmbeddedEtcdMember) KeepLeader

func (m *EmbeddedEtcdMember) KeepLeader(ctx context.Context)

KeepLeader is used to keep the PD leader's leadership.

func (*EmbeddedEtcdMember) Member

func (m *EmbeddedEtcdMember) Member() *pdpb.Member

Member returns the member.

func (*EmbeddedEtcdMember) MemberValue

func (m *EmbeddedEtcdMember) MemberValue() string

MemberValue returns the member value.

func (*EmbeddedEtcdMember) MoveEtcdLeader

func (m *EmbeddedEtcdMember) MoveEtcdLeader(ctx context.Context, old, new uint64) error

MoveEtcdLeader tries to transfer etcd leader.

func (*EmbeddedEtcdMember) Name

func (m *EmbeddedEtcdMember) Name() string

Name returns the unique etcd Name for this server in etcd cluster.

func (*EmbeddedEtcdMember) PreCheckLeader

func (m *EmbeddedEtcdMember) PreCheckLeader() error

PreCheckLeader does some pre-check before checking whether or not it's the leader.

func (*EmbeddedEtcdMember) ResetLeader

func (m *EmbeddedEtcdMember) ResetLeader()

ResetLeader is used to reset the PD member's current leadership. Basically it will reset the leader lease and unset leader info.

func (*EmbeddedEtcdMember) ResignEtcdLeader

func (m *EmbeddedEtcdMember) ResignEtcdLeader(ctx context.Context, from string, nextEtcdLeader string) error

ResignEtcdLeader resigns current PD's etcd leadership. If nextLeader is empty, all other pd-servers can campaign.

func (*EmbeddedEtcdMember) SetMemberBinaryVersion

func (m *EmbeddedEtcdMember) SetMemberBinaryVersion(id uint64, releaseVersion string) error

SetMemberBinaryVersion saves a member's binary version.

func (*EmbeddedEtcdMember) SetMemberDeployPath

func (m *EmbeddedEtcdMember) SetMemberDeployPath(id uint64) error

SetMemberDeployPath saves a member's binary deploy path.

func (*EmbeddedEtcdMember) SetMemberGitHash

func (m *EmbeddedEtcdMember) SetMemberGitHash(id uint64, gitHash string) error

SetMemberGitHash saves a member's git hash.

func (*EmbeddedEtcdMember) SetMemberLeaderPriority

func (m *EmbeddedEtcdMember) SetMemberLeaderPriority(id uint64, priority int) error

SetMemberLeaderPriority saves a member's priority to be elected as the etcd leader.

func (*EmbeddedEtcdMember) WatchLeader

func (m *EmbeddedEtcdMember) WatchLeader(ctx context.Context, leader *pdpb.Member, revision int64)

WatchLeader is used to watch the changes of the leader.

type EtcdLeader

type EtcdLeader struct {
	// contains filtered or unexported fields
}

EtcdLeader is the leader in the election group backed by the etcd, but it's decoupled from the embedded etcd.

func (*EtcdLeader) GetListenUrls

func (l *EtcdLeader) GetListenUrls() []string

GetListenUrls returns current leader's client urls

func (*EtcdLeader) GetRevision

func (l *EtcdLeader) GetRevision() int64

GetRevision the revision of the leader in etcd

func (*EtcdLeader) String

func (l *EtcdLeader) String() string

String declares fmt.Stringer

func (*EtcdLeader) Watch

func (l *EtcdLeader) Watch(ctx context.Context)

Watch on the leader

type Participant

type Participant struct {
	// contains filtered or unexported fields
}

Participant is used for the election related logic. Compared to its counterpart EmbeddedEtcdMember, Participant relies on etcd for election, but it's decoupled from the embedded etcd. It implements Member interface.

func NewParticipant

func NewParticipant(client *clientv3.Client) *Participant

NewParticipant create a new Participant.

func (*Participant) CampaignLeader

func (m *Participant) CampaignLeader(leaseTimeout int64) error

CampaignLeader is used to campaign the leadership and make it become a leader.

func (*Participant) CheckLeader

func (m *Participant) CheckLeader() (ElectionLeader, bool)

CheckLeader checks if someone else is taking the leadership. If yes, returns the leader; otherwise returns a bool which indicates if it is needed to check later.

func (*Participant) CheckPriority

func (m *Participant) CheckPriority(ctx context.Context)

CheckPriority checks whether there is another participant has higher priority and resign it as the leader if so.

func (*Participant) Client

func (m *Participant) Client() *clientv3.Client

Client returns the etcd client.

func (*Participant) DeleteDCLocationInfo

func (m *Participant) DeleteDCLocationInfo(id uint64) error

DeleteDCLocationInfo removes the dc-location info.

func (*Participant) DeleteLeaderPriority

func (m *Participant) DeleteLeaderPriority(id uint64) error

DeleteLeaderPriority removes the etcd leader priority config.

func (*Participant) EnableLeader

func (m *Participant) EnableLeader()

EnableLeader declares the member itself to be the leader.

func (*Participant) GetDCLocationPath

func (m *Participant) GetDCLocationPath(id uint64) string

GetDCLocationPath returns the dc-location path of a member with the given member ID.

func (*Participant) GetDCLocationPathPrefix

func (m *Participant) GetDCLocationPathPrefix() string

GetDCLocationPathPrefix returns the dc-location path prefix of the cluster.

func (*Participant) GetLastLeaderUpdatedTime

func (m *Participant) GetLastLeaderUpdatedTime() time.Time

GetLastLeaderUpdatedTime returns the last time when the leader is updated.

func (*Participant) GetLeader

func (m *Participant) GetLeader() *tsopb.Participant

GetLeader returns current leader of the election group.

func (*Participant) GetLeaderID

func (m *Participant) GetLeaderID() uint64

GetLeaderID returns current leader's member ID.

func (*Participant) GetLeaderListenUrls

func (m *Participant) GetLeaderListenUrls() []string

GetLeaderListenUrls returns current leader's listen urls

func (*Participant) GetLeaderPath

func (m *Participant) GetLeaderPath() string

GetLeaderPath returns the path of the leader.

func (*Participant) GetLeaderPriority

func (m *Participant) GetLeaderPriority(id uint64) (int, error)

GetLeaderPriority loads the priority to be elected as the etcd leader.

func (*Participant) GetLeadership

func (m *Participant) GetLeadership() *election.Leadership

GetLeadership returns the leadership of the member.

func (*Participant) GetMember

func (m *Participant) GetMember() interface{}

GetMember returns the member.

func (*Participant) ID

func (m *Participant) ID() uint64

ID returns the unique ID for this participant in the election group

func (*Participant) InitInfo

func (m *Participant) InitInfo(name string, id uint64, rootPath string, leaderName string, purpose string, advertiseListenAddr string)

InitInfo initializes the member info. The leader key is path.Join(rootPath, leaderName)

func (*Participant) IsLeader

func (m *Participant) IsLeader() bool

IsLeader returns whether the participant is the leader or not by checking its leadership's lease and leader info.

func (*Participant) IsLeaderElected

func (m *Participant) IsLeaderElected() bool

IsLeaderElected returns true if the leader exists; otherwise false

func (*Participant) IsSameLeader

func (m *Participant) IsSameLeader(leader *tsopb.Participant) bool

IsSameLeader checks whether a server is the leader itself.

func (*Participant) KeepLeader

func (m *Participant) KeepLeader(ctx context.Context)

KeepLeader is used to keep the leader's leadership.

func (*Participant) MemberValue

func (m *Participant) MemberValue() string

MemberValue returns the member value.

func (*Participant) Name

func (m *Participant) Name() string

Name returns the unique name in the election group.

func (*Participant) PreCheckLeader

func (m *Participant) PreCheckLeader() error

PreCheckLeader does some pre-check before checking whether or not it's the leader. It returns true if it passes the pre-check, false otherwise.

func (*Participant) ResetLeader

func (m *Participant) ResetLeader()

ResetLeader is used to reset the member's current leadership. Basically it will reset the leader lease and unset leader info.

func (*Participant) SetLeaderPriority

func (m *Participant) SetLeaderPriority(id uint64, priority int) error

SetLeaderPriority saves the priority to be elected as the etcd leader.

func (*Participant) SetPreCampaignChecker

func (m *Participant) SetPreCampaignChecker(checker leadershipCheckFunc)

SetPreCampaignChecker sets the pre-campaign checker.

func (*Participant) WatchLeader

func (m *Participant) WatchLeader(ctx context.Context, leader *tsopb.Participant, revision int64)

WatchLeader is used to watch the changes of the leader.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL