@@ -3,6 +3,7 @@ package cmd
3
3
import (
4
4
"fmt"
5
5
"os"
6
+ "time"
6
7
7
8
"go.uber.org/zap"
8
9
appv1 "k8s.io/api/apps/v1"
@@ -41,6 +42,20 @@ type ArgoEventsControllerOpts struct {
41
42
HealthPort int32
42
43
}
43
44
45
+ func lookupEnvDurationOr (key string , o time.Duration ) * time.Duration {
46
+ logger := logging .NewArgoEventsLogger ().Named (eventbus .ControllerName )
47
+ v , found := os .LookupEnv (key )
48
+ if found && v != "" {
49
+ d , err := time .ParseDuration (v )
50
+ if err != nil {
51
+ logger .With (key , v ).Fatalw ("failed to parse" , zap .Error (err ))
52
+ } else {
53
+ return & d
54
+ }
55
+ }
56
+ return & o
57
+ }
58
+
44
59
func Start (eventsOpts ArgoEventsControllerOpts ) {
45
60
logger := logging .NewArgoEventsLogger ().Named (eventbus .ControllerName )
46
61
config , err := controllers .LoadConfig (func (err error ) {
@@ -74,6 +89,9 @@ func Start(eventsOpts ArgoEventsControllerOpts) {
74
89
if eventsOpts .LeaderElection {
75
90
opts .LeaderElection = true
76
91
opts .LeaderElectionID = "argo-events-controller"
92
+ opts .LeaseDuration = lookupEnvDurationOr ("LEADER_ELECTION_LEASE_DURATION" , 15 * time .Second )
93
+ opts .RenewDeadline = lookupEnvDurationOr ("LEADER_ELECTION_RENEW_DEADLINE" , 10 * time .Second )
94
+ opts .RetryPeriod = lookupEnvDurationOr ("LEADER_ELECTION_RETRY_PERIOD" , 5 * time .Second )
77
95
}
78
96
restConfig := ctrl .GetConfigOrDie ()
79
97
mgr , err := ctrl .NewManager (restConfig , opts )
0 commit comments