Documentation
¶
Index ¶
Constants ¶
View Source
const (
// JitterFactor is the factor to jitter the RetryPeriod by
JitterFactor = 1.2
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
// Lock is the resource that will be used for locking
Lock rl.Interface
// LeaseDuration is the duration that non-leader candidates will
// wait to force acquire leadership. This is measured against time of
// last observed ack.
LeaseDuration time.Duration
// RenewDeadline is the duration that the acting master will retry
// refreshing leadership before giving up.
RenewDeadline time.Duration
// RetryPeriod is the duration the LeaderElector clients should wait
// between tries of actions.
RetryPeriod time.Duration
// TermLimit is the maximum duration that a leader may remain the leader
// to complete the task before it must give up its leadership. 0 for forever
// or indefinite.
TermLimit time.Duration
// Callbacks are callbacks that are triggered during certain lifecycle
// events of the LeaderElector
Callbacks LeaderCallbacks
}
Config is a configuration for leader election
type LeaderCallbacks ¶
type LeaderCallbacks struct {
// OnStartedLeading is called when a LeaderElector client starts leading
OnStartedLeading func(stop <-chan struct{})
// OnStoppedLeading is called when a LeaderElector client stops leading
OnStoppedLeading func()
// OnNewLeader is called when the client observes a leader that is
// not the previously observed leader. This includes the first observed
// leader when the client starts.
OnNewLeader func(identity string)
}
LeaderCallbacks are callbacks that are triggered during certain lifecycle events of the LeaderElector. These are invoked asynchronously.
possible future callbacks:
- OnChallenge()
type LeaderElector ¶
type LeaderElector struct {
// contains filtered or unexported fields
}
LeaderElector is a leader election client.
possible future methods:
- (le *LeaderElector) IsLeader()
- (le *LeaderElector) GetLeader()
func NewLeaderElector ¶
func NewLeaderElector(lec Config) (*LeaderElector, error)
NewLeaderElector creates a LeaderElector from a Config
func (*LeaderElector) GetLeader ¶
func (le *LeaderElector) GetLeader() string
GetLeader returns the identity of the last observed leader or returns the empty string if no leader has yet been observed.
func (*LeaderElector) IsLeader ¶
func (le *LeaderElector) IsLeader() bool
IsLeader returns true if the last observed leader was this client else returns false.
func (*LeaderElector) Run ¶
func (le *LeaderElector) Run(task <-chan bool)
Run starts the leader election loop
Click to show internal directories.
Click to hide internal directories.