From 3f67d9605900152449905b2b430f821e51af85ac Mon Sep 17 00:00:00 2001 From: Nikhil Sharma Date: Mon, 4 Apr 2022 00:45:42 +0530 Subject: [PATCH] Set LeaderElectionReleaseOnCancel to the Manager in scaffolded main.go --- .../v2/scaffolds/internal/templates/main.go | 4 +++- .../v3/scaffolds/internal/templates/main.go | 3 +++ testdata/project-v2-addon/main.go | 14 ++++++++------ testdata/project-v2-multigroup/main.go | 14 ++++++++------ testdata/project-v2/main.go | 14 ++++++++------ testdata/project-v3-addon/main.go | 15 +++++++++------ testdata/project-v3-multigroup/main.go | 15 +++++++++------ testdata/project-v3-v1beta1/main.go | 15 +++++++++------ testdata/project-v3/main.go | 15 +++++++++------ 9 files changed, 66 insertions(+), 43 deletions(-) diff --git a/pkg/plugins/golang/v2/scaffolds/internal/templates/main.go b/pkg/plugins/golang/v2/scaffolds/internal/templates/main.go index c2bd6928d85..00e8987cac1 100644 --- a/pkg/plugins/golang/v2/scaffolds/internal/templates/main.go +++ b/pkg/plugins/golang/v2/scaffolds/internal/templates/main.go @@ -218,13 +218,15 @@ func main() { flag.Parse() ctrl.SetLogger(zap.New(zap.UseDevMode(true))) - + // Setting LeaderElectionReleaseOnCancel to true prevents main.go + // scripts to close when Manager is done and improves the performance of re-election. mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ Scheme: scheme, MetricsBindAddress: metricsAddr, Port: 9443, LeaderElection: enableLeaderElection, LeaderElectionID: "{{ hashFNV .Repo }}.{{ .Domain }}", + LeaderElectionReleaseOnCancel: true, }) if err != nil { setupLog.Error(err, "unable to start manager") diff --git a/pkg/plugins/golang/v3/scaffolds/internal/templates/main.go b/pkg/plugins/golang/v3/scaffolds/internal/templates/main.go index 34d80b4f098..d4e774ad48f 100644 --- a/pkg/plugins/golang/v3/scaffolds/internal/templates/main.go +++ b/pkg/plugins/golang/v3/scaffolds/internal/templates/main.go @@ -238,6 +238,8 @@ func main() { ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts))) {{ if not .ComponentConfig }} + // Setting LeaderElectionReleaseOnCancel to true prevents main.go + // scripts to close when Manager is done and improves the performance of re-election. mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ Scheme: scheme, MetricsBindAddress: metricsAddr, @@ -245,6 +247,7 @@ func main() { HealthProbeBindAddress: probeAddr, LeaderElection: enableLeaderElection, LeaderElectionID: "{{ hashFNV .Repo }}.{{ .Domain }}", + LeaderElectionReleaseOnCancel: true, }) {{- else }} var err error diff --git a/testdata/project-v2-addon/main.go b/testdata/project-v2-addon/main.go index 70a31af5643..e2c2c8d5ba9 100644 --- a/testdata/project-v2-addon/main.go +++ b/testdata/project-v2-addon/main.go @@ -54,13 +54,15 @@ func main() { flag.Parse() ctrl.SetLogger(zap.New(zap.UseDevMode(true))) - + // Setting LeaderElectionReleaseOnCancel to true prevents main.go + // scripts to close when Manager is done and improves the performance of re-election. mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ - Scheme: scheme, - MetricsBindAddress: metricsAddr, - Port: 9443, - LeaderElection: enableLeaderElection, - LeaderElectionID: "3a3badaf.testproject.org", + Scheme: scheme, + MetricsBindAddress: metricsAddr, + Port: 9443, + LeaderElection: enableLeaderElection, + LeaderElectionID: "3a3badaf.testproject.org", + LeaderElectionReleaseOnCancel: true, }) if err != nil { setupLog.Error(err, "unable to start manager") diff --git a/testdata/project-v2-multigroup/main.go b/testdata/project-v2-multigroup/main.go index 61478e2f292..1afa9203fe4 100644 --- a/testdata/project-v2-multigroup/main.go +++ b/testdata/project-v2-multigroup/main.go @@ -76,13 +76,15 @@ func main() { flag.Parse() ctrl.SetLogger(zap.New(zap.UseDevMode(true))) - + // Setting LeaderElectionReleaseOnCancel to true prevents main.go + // scripts to close when Manager is done and improves the performance of re-election. mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ - Scheme: scheme, - MetricsBindAddress: metricsAddr, - Port: 9443, - LeaderElection: enableLeaderElection, - LeaderElectionID: "e9b53b87.testproject.org", + Scheme: scheme, + MetricsBindAddress: metricsAddr, + Port: 9443, + LeaderElection: enableLeaderElection, + LeaderElectionID: "e9b53b87.testproject.org", + LeaderElectionReleaseOnCancel: true, }) if err != nil { setupLog.Error(err, "unable to start manager") diff --git a/testdata/project-v2/main.go b/testdata/project-v2/main.go index 40f6c91c886..7be89149bf6 100644 --- a/testdata/project-v2/main.go +++ b/testdata/project-v2/main.go @@ -54,13 +54,15 @@ func main() { flag.Parse() ctrl.SetLogger(zap.New(zap.UseDevMode(true))) - + // Setting LeaderElectionReleaseOnCancel to true prevents main.go + // scripts to close when Manager is done and improves the performance of re-election. mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ - Scheme: scheme, - MetricsBindAddress: metricsAddr, - Port: 9443, - LeaderElection: enableLeaderElection, - LeaderElectionID: "dc1d9fac.testproject.org", + Scheme: scheme, + MetricsBindAddress: metricsAddr, + Port: 9443, + LeaderElection: enableLeaderElection, + LeaderElectionID: "dc1d9fac.testproject.org", + LeaderElectionReleaseOnCancel: true, }) if err != nil { setupLog.Error(err, "unable to start manager") diff --git a/testdata/project-v3-addon/main.go b/testdata/project-v3-addon/main.go index dc898dab8f1..5afd8b8f2a6 100644 --- a/testdata/project-v3-addon/main.go +++ b/testdata/project-v3-addon/main.go @@ -65,13 +65,16 @@ func main() { ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts))) + // Setting LeaderElectionReleaseOnCancel to true prevents main.go + // scripts to close when Manager is done and improves the performance of re-election. mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ - Scheme: scheme, - MetricsBindAddress: metricsAddr, - Port: 9443, - HealthProbeBindAddress: probeAddr, - LeaderElection: enableLeaderElection, - LeaderElectionID: "52ea9610.testproject.org", + Scheme: scheme, + MetricsBindAddress: metricsAddr, + Port: 9443, + HealthProbeBindAddress: probeAddr, + LeaderElection: enableLeaderElection, + LeaderElectionID: "52ea9610.testproject.org", + LeaderElectionReleaseOnCancel: true, }) if err != nil { setupLog.Error(err, "unable to start manager") diff --git a/testdata/project-v3-multigroup/main.go b/testdata/project-v3-multigroup/main.go index aa566237105..2713fc3820c 100644 --- a/testdata/project-v3-multigroup/main.go +++ b/testdata/project-v3-multigroup/main.go @@ -90,13 +90,16 @@ func main() { ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts))) + // Setting LeaderElectionReleaseOnCancel to true prevents main.go + // scripts to close when Manager is done and improves the performance of re-election. mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ - Scheme: scheme, - MetricsBindAddress: metricsAddr, - Port: 9443, - HealthProbeBindAddress: probeAddr, - LeaderElection: enableLeaderElection, - LeaderElectionID: "14be1926.testproject.org", + Scheme: scheme, + MetricsBindAddress: metricsAddr, + Port: 9443, + HealthProbeBindAddress: probeAddr, + LeaderElection: enableLeaderElection, + LeaderElectionID: "14be1926.testproject.org", + LeaderElectionReleaseOnCancel: true, }) if err != nil { setupLog.Error(err, "unable to start manager") diff --git a/testdata/project-v3-v1beta1/main.go b/testdata/project-v3-v1beta1/main.go index 44ed897a511..019dd2e4e52 100644 --- a/testdata/project-v3-v1beta1/main.go +++ b/testdata/project-v3-v1beta1/main.go @@ -65,13 +65,16 @@ func main() { ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts))) + // Setting LeaderElectionReleaseOnCancel to true prevents main.go + // scripts to close when Manager is done and improves the performance of re-election. mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ - Scheme: scheme, - MetricsBindAddress: metricsAddr, - Port: 9443, - HealthProbeBindAddress: probeAddr, - LeaderElection: enableLeaderElection, - LeaderElectionID: "2eab85d8.testproject.org", + Scheme: scheme, + MetricsBindAddress: metricsAddr, + Port: 9443, + HealthProbeBindAddress: probeAddr, + LeaderElection: enableLeaderElection, + LeaderElectionID: "2eab85d8.testproject.org", + LeaderElectionReleaseOnCancel: true, }) if err != nil { setupLog.Error(err, "unable to start manager") diff --git a/testdata/project-v3/main.go b/testdata/project-v3/main.go index c8f85f0b275..6865571775c 100644 --- a/testdata/project-v3/main.go +++ b/testdata/project-v3/main.go @@ -65,13 +65,16 @@ func main() { ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts))) + // Setting LeaderElectionReleaseOnCancel to true prevents main.go + // scripts to close when Manager is done and improves the performance of re-election. mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ - Scheme: scheme, - MetricsBindAddress: metricsAddr, - Port: 9443, - HealthProbeBindAddress: probeAddr, - LeaderElection: enableLeaderElection, - LeaderElectionID: "dd1da13f.testproject.org", + Scheme: scheme, + MetricsBindAddress: metricsAddr, + Port: 9443, + HealthProbeBindAddress: probeAddr, + LeaderElection: enableLeaderElection, + LeaderElectionID: "dd1da13f.testproject.org", + LeaderElectionReleaseOnCancel: true, }) if err != nil { setupLog.Error(err, "unable to start manager")