Skip to content

Commit d39bec2

Browse files
authored
Merge pull request #50 from ConnorJC3/fix-controller-regain-lease
Create ModifyController on demand in main.go
2 parents bb5fb08 + 29e51b1 commit d39bec2

File tree

4 files changed

+21
-20
lines changed

4 files changed

+21
-20
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ on:
88

99
jobs:
1010
test:
11-
runs-on: ubuntu-20.04
11+
runs-on: ubuntu-latest
1212
steps:
1313
- uses: actions/checkout@v3
1414
- uses: actions/setup-go@v4
1515
with:
1616
go-version: '>=1.20'
1717
- run: make
18-
- run: make test
18+
- run: make test

cmd/main.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@ func main() {
9595
klog.Fatal(err.Error())
9696
}
9797

98-
informerFactory := informers.NewSharedInformerFactory(kubeClient, *resyncPeriod)
9998
mux := http.NewServeMux()
10099
metricsManager := metrics.NewCSIMetricsManager("" /* driverName */)
101100
csiClient, err := csi.New(*csiAddress, *timeout, metricsManager)
@@ -135,15 +134,17 @@ func main() {
135134
}
136135

137136
modifierName := csiModifier.Name()
138-
mc := controller.NewModifyController(
139-
modifierName,
140-
csiModifier,
141-
kubeClient,
142-
*resyncPeriod,
143-
informerFactory,
144-
workqueue.NewItemExponentialFailureRateLimiter(*retryIntervalStart, *retryIntervalMax),
145-
true, /* retryFailure */
146-
)
137+
mc := func() controller.ModifyController {
138+
return controller.NewModifyController(
139+
modifierName,
140+
csiModifier,
141+
kubeClient,
142+
*resyncPeriod,
143+
informers.NewSharedInformerFactory(kubeClient, *resyncPeriod),
144+
workqueue.NewItemExponentialFailureRateLimiter(*retryIntervalStart, *retryIntervalMax),
145+
true, /* retryFailure */
146+
)
147+
}
147148
leaseChannel := make(chan *v1.Lease)
148149
go leaseHandler(podName, mc, leaseChannel)
149150

@@ -162,12 +163,11 @@ func main() {
162163
}
163164
},
164165
})
165-
informerFactory.Start(wait.NeverStop)
166166
informerFactoryLeases.Start(wait.NeverStop)
167167
leaseInformer.Run(wait.NeverStop)
168168
}
169169

170-
func leaseHandler(podName string, mc controller.ModifyController, leaseChannel chan *v1.Lease) {
170+
func leaseHandler(podName string, mc func() controller.ModifyController, leaseChannel chan *v1.Lease) {
171171
var cancel context.CancelFunc = nil
172172

173173
klog.InfoS("leaseHandler: Looking for external-resizer lease holder")
@@ -191,7 +191,7 @@ func leaseHandler(podName string, mc controller.ModifyController, leaseChannel c
191191
var ctx context.Context
192192
ctx, cancel = context.WithCancel(context.Background())
193193
klog.InfoS("leaseHandler: Starting ModifyController", "podName", podName, "currentLeader", currentLeader)
194-
go mc.Run(*workers, ctx)
194+
go mc().Run(*workers, ctx)
195195
} else if currentLeader != podName && cancel != nil {
196196
klog.InfoS("leaseHandler: Stopping ModifyController", "podName", podName, "currentLeader", currentLeader)
197197
cancel()

cmd/main_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func TestLeaseHandler_PodRegainsLeadership(t *testing.T) {
7777
leaseChannel := make(chan *v1.Lease, 3)
7878
defer close(leaseChannel)
7979

80-
go leaseHandler("test-pod", mockModifyController, leaseChannel)
80+
go leaseHandler("test-pod", func() controller.ModifyController { return mockModifyController }, leaseChannel)
8181

8282
// Become the leader
8383
leaseChannel <- newLease("external-resizer-ebs-csi-aws-com", "test-pod")
@@ -113,7 +113,7 @@ func TestLeaseHandler_RunCalledOnce(t *testing.T) {
113113
leaseChannel := make(chan *v1.Lease, 3)
114114
defer close(leaseChannel)
115115

116-
go leaseHandler("test-pod", mockModifyController, leaseChannel)
116+
go leaseHandler("test-pod", func() controller.ModifyController { return mockModifyController }, leaseChannel)
117117

118118
for i := 0; i < 10; i++ {
119119
leaseChannel <- newLease("external-resizer-ebs-csi-aws-com", "test-pod")
@@ -140,7 +140,7 @@ func newLease(name, holderIdentity string) *v1.Lease {
140140

141141
func runLeaseHandlerAndSendLease(t *testing.T, podName string, mockModifyController *controller.MockModifyController, lease *v1.Lease) {
142142
leaseChannel := make(chan *v1.Lease, 1)
143-
go leaseHandler(podName, mockModifyController, leaseChannel)
143+
go leaseHandler(podName, func() controller.ModifyController { return mockModifyController }, leaseChannel)
144144
leaseChannel <- lease
145145
close(leaseChannel)
146146
}

pkg/controller/controller.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ func NewModifyController(
6565
UpdateFunc: ctrl.updatePVC,
6666
DeleteFunc: ctrl.deletePVC,
6767
}, resyncPeriod)
68+
informerFactory.Start(wait.NeverStop)
6869

6970
return ctrl
7071
}
@@ -366,13 +367,13 @@ func (c *modifyController) needsProcessing(old *v1.PersistentVolumeClaim, new *v
366367
}
367368

368369
annotations := make(map[string]struct{})
369-
for key, _ := range new.Annotations {
370+
for key := range new.Annotations {
370371
if c.isValidAnnotation(key) {
371372
annotations[key] = struct{}{}
372373
}
373374
}
374375

375-
for a, _ := range annotations {
376+
for a := range annotations {
376377
oldValue := old.Annotations[a]
377378
newValue := new.Annotations[a]
378379

0 commit comments

Comments
 (0)