From f108e81496be675e126120e416e1da9bf7d1bcfc Mon Sep 17 00:00:00 2001 From: Alvaro Aleman Date: Sat, 27 Feb 2021 12:39:28 -0500 Subject: [PATCH] :bug: Manager leader election: Don't reset restcfg UserAgent In pkg.LeaderElection.NewResourceLock we call rest.AddUserAgent which resets the restcfgs useragent and sets it to the default one plus a suffix. This resets whatever was originally set as UserAgent and since we do not copy our restcfg before passing it in there, this leads to the UserAgent being set to the leader-election one globally. --- pkg/manager/manager.go | 6 +++--- pkg/manager/manager_test.go | 11 +++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/pkg/manager/manager.go b/pkg/manager/manager.go index 686dca1a57..3b59ebb790 100644 --- a/pkg/manager/manager.go +++ b/pkg/manager/manager.go @@ -308,9 +308,9 @@ func New(config *rest.Config, options Options) (Manager, error) { } // Create the resource lock to enable leader election) - leaderConfig := config - if options.LeaderElectionConfig != nil { - leaderConfig = options.LeaderElectionConfig + leaderConfig := options.LeaderElectionConfig + if leaderConfig == nil { + leaderConfig = rest.CopyConfig(config) } resourceLock, err := options.newResourceLock(leaderConfig, recorderProvider, leaderelection.Options{ LeaderElection: options.LeaderElection, diff --git a/pkg/manager/manager_test.go b/pkg/manager/manager_test.go index 8161ad2a70..7aa6f8bd33 100644 --- a/pkg/manager/manager_test.go +++ b/pkg/manager/manager_test.go @@ -592,6 +592,17 @@ var _ = Describe("manger.Manager", func() { close(done) }) + It("should not manipulate the provided config", func() { + originalCfg := rest.CopyConfig(cfg) + options.newResourceLock = nil + m, err := New(cfg, options) + Expect(err).NotTo(HaveOccurred()) + for _, cb := range callbacks { + cb(m) + } + Expect(m.GetConfig()).To(Equal(originalCfg)) + }) + It("should stop when context is cancelled", func(done Done) { m, err := New(cfg, options) Expect(err).NotTo(HaveOccurred())