27 lines
700 B
Go
27 lines
700 B
Go
package cluster
|
|
|
|
import (
|
|
"context"
|
|
)
|
|
|
|
const (
|
|
// EtcdLeaderElector is the id used when constructing an
|
|
// etcdLeaderElector instance through the factory.
|
|
EtcdLeaderElector = "etcd"
|
|
)
|
|
|
|
// LeaderElector is a general interface implementing basic leader elections
|
|
// in a clustered environment.
|
|
type LeaderElector interface {
|
|
// Campaign starts a run for leadership. Campaign will block until
|
|
// the caller is elected as the leader.
|
|
Campaign(ctx context.Context) error
|
|
|
|
// Resign resigns from the leader role, allowing other election members
|
|
// to take on leadership.
|
|
Resign() error
|
|
|
|
// Leader returns the leader value for the current election.
|
|
Leader(ctx context.Context) (string, error)
|
|
}
|