acquire loops calling tryAcquireOrRenew and returns true immediately when tryAcquireOrRenew succeeds. Returns false if ctx signals done.
(ctx context.Context)
| 228 | // acquire loops calling tryAcquireOrRenew and returns true immediately when tryAcquireOrRenew succeeds. |
| 229 | // Returns false if ctx signals done. |
| 230 | func (le *LeaderElector) acquire(ctx context.Context) bool { |
| 231 | ctx, cancel := context.WithCancel(ctx) |
| 232 | defer cancel() |
| 233 | succeeded := false |
| 234 | desc := le.config.Lock.Describe() |
| 235 | klog.Infof("attempting to acquire leader lease %v...", desc) |
| 236 | wait.JitterUntil(func() { |
| 237 | succeeded = le.tryAcquireOrRenew() |
| 238 | le.maybeReportTransition() |
| 239 | if !succeeded { |
| 240 | klog.V(4).Infof("failed to acquire lease %v", desc) |
| 241 | return |
| 242 | } |
| 243 | le.config.Lock.RecordEvent("became leader") |
| 244 | le.metrics.leaderOn(le.config.Name) |
| 245 | klog.Infof("successfully acquired lease %v", desc) |
| 246 | cancel() |
| 247 | }, le.config.RetryPeriod, JitterFactor, true, ctx.Done()) |
| 248 | return succeeded |
| 249 | } |
| 250 | |
| 251 | // renew loops calling tryAcquireOrRenew and returns immediately when tryAcquireOrRenew fails or ctx signals done. |
| 252 | func (le *LeaderElector) renew(ctx context.Context) { |
no test coverage detected