Browse Source

concurrency: support resuming elections if leadership already held

If a client already knows it holds leadership, let it create an
election object with its leadership information.
Anthony Romano 8 years ago
parent
commit
80c1b9c13a
1 changed files with 10 additions and 0 deletions
  1. 10 0
      clientv3/concurrency/election.go

+ 10 - 0
clientv3/concurrency/election.go

@@ -45,6 +45,16 @@ func NewElection(s *Session, pfx string) *Election {
 	return &Election{session: s, keyPrefix: pfx + "/"}
 }
 
+// ResumeElection initializes an election with a known leader.
+func ResumeElection(s *Session, pfx string, leaderKey string, leaderRev int64) *Election {
+	return &Election{
+		session:       s,
+		leaderKey:     leaderKey,
+		leaderRev:     leaderRev,
+		leaderSession: s,
+	}
+}
+
 // Campaign puts a value as eligible for the election. It blocks until
 // it is elected, an error occurs, or the context is cancelled.
 func (e *Election) Campaign(ctx context.Context, val string) error {