Skip to content

Commit d25b1ee

Browse files
committed
⚠️ Remove defaulting for leader election ID
With the current defaulting for the leader election ID, there is a clash as soon as two controller that do not have it explicitly configured run in the same namespace or have the same namespace configured for leader election. This is especially bad since there is no logging about the lock being held by a different controller, so from a users perspective this looks like the controller just froze. Fixes #445
1 parent 13ee2bc commit d25b1ee

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

pkg/leaderelection/leader_election.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package leaderelection
1818

1919
import (
20+
"errors"
2021
"fmt"
2122
"io/ioutil"
2223
"os"
@@ -52,9 +53,9 @@ func NewResourceLock(config *rest.Config, recorderProvider recorder.Provider, op
5253
return nil, nil
5354
}
5455

55-
// Default the LeaderElectionID
56+
// LeaderElectionID must be provided to prevent clashes
5657
if options.LeaderElectionID == "" {
57-
options.LeaderElectionID = "controller-leader-election-helper"
58+
return nil, errors.New("LeaderElectionID must be configured")
5859
}
5960

6061
// Default the namespace (if running in cluster)

pkg/manager/manager_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,16 @@ var _ = Describe("manger.Manager", func() {
143143
m, err := New(cfg, Options{
144144
LeaderElection: true,
145145
LeaderElectionNamespace: "default",
146+
LeaderElectionID: "test-leader-election-id",
146147
newResourceLock: func(config *rest.Config, recorderProvider recorder.Provider, options leaderelection.Options) (resourcelock.Interface, error) {
147148
var err error
148149
rl, err = leaderelection.NewResourceLock(config, recorderProvider, options)
149150
return rl, err
150151
},
151152
})
152-
Expect(m).ToNot(BeNil())
153153
Expect(err).ToNot(HaveOccurred())
154-
Expect(rl.Describe()).To(Equal("default/controller-leader-election-helper"))
154+
Expect(m).ToNot(BeNil())
155+
Expect(rl.Describe()).To(Equal("default/test-leader-election-id"))
155156
})
156157

157158
It("should return an error if namespace not set and not running in cluster", func() {

0 commit comments

Comments
 (0)