Skip to content

Commit 7f050c2

Browse files
authored
Merge pull request #1116 from vincepri/propagate-context-worker
⚠️ Propagate context.Context throughout the codebase
2 parents 749cc0c + 8d45507 commit 7f050c2

36 files changed

+443
-406
lines changed

designs/move-cluster-specific-code-out-of-manager.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ func NewSecretMirrorReconciler(mgr manager.Manager, mirrorCluster cluster.Cluste
203203

204204
func main(){
205205

206-
mgr, err := manager.New(cfg1, manager.Options{})
206+
mgr, err := manager.New(context.Background(), cfg1, manager.Options{})
207207
if err != nil {
208208
panic(err)
209209
}

example_test.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import (
3838
func Example() {
3939
var log = controllers.Log.WithName("builder-examples")
4040

41-
manager, err := controllers.NewManager(controllers.GetConfigOrDie(), controllers.Options{})
41+
manager, err := controllers.NewManager(context.Background(), controllers.GetConfigOrDie(), controllers.Options{})
4242
if err != nil {
4343
log.Error(err, "could not create manager")
4444
os.Exit(1)
@@ -78,11 +78,14 @@ func Example_updateLeaderElectionDurations() {
7878
leaseDuration := 100 * time.Second
7979
renewDeadline := 80 * time.Second
8080
retryPeriod := 20 * time.Second
81-
manager, err := controllers.NewManager(controllers.GetConfigOrDie(), controllers.Options{
82-
LeaseDuration: &leaseDuration,
83-
RenewDeadline: &renewDeadline,
84-
RetryPeriod: &retryPeriod,
85-
})
81+
manager, err := controllers.NewManager(
82+
context.Background(),
83+
controllers.GetConfigOrDie(),
84+
controllers.Options{
85+
LeaseDuration: &leaseDuration,
86+
RenewDeadline: &renewDeadline,
87+
RetryPeriod: &retryPeriod,
88+
})
8689
if err != nil {
8790
log.Error(err, "could not create manager")
8891
os.Exit(1)

examples/builtins/main.go

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

1919
import (
20+
"context"
2021
"os"
2122

2223
appsv1 "k8s.io/api/apps/v1"
@@ -42,7 +43,7 @@ func main() {
4243

4344
// Setup a Manager
4445
entryLog.Info("setting up manager")
45-
mgr, err := manager.New(config.GetConfigOrDie(), manager.Options{})
46+
mgr, err := manager.New(context.Background(), config.GetConfigOrDie(), manager.Options{})
4647
if err != nil {
4748
entryLog.Error(err, "unable to set up overall controller manager")
4849
os.Exit(1)

examples/crd/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ func (r *reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Resu
104104
func main() {
105105
ctrl.SetLogger(zap.New())
106106

107-
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{})
107+
mgr, err := ctrl.NewManager(context.Background(), ctrl.GetConfigOrDie(), ctrl.Options{})
108108
if err != nil {
109109
setupLog.Error(err, "unable to start manager")
110110
os.Exit(1)

pkg/builder/controller_test.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ var _ = Describe("application", func() {
7979
Describe("New", func() {
8080
It("should return success if given valid objects", func() {
8181
By("creating a controller manager")
82-
m, err := manager.New(cfg, manager.Options{})
82+
m, err := manager.New(context.Background(), cfg, manager.Options{})
8383
Expect(err).NotTo(HaveOccurred())
8484

8585
instance, err := ControllerManagedBy(m).
@@ -92,7 +92,7 @@ var _ = Describe("application", func() {
9292

9393
It("should return error if given two apiType objects in For function", func() {
9494
By("creating a controller manager")
95-
m, err := manager.New(cfg, manager.Options{})
95+
m, err := manager.New(context.Background(), cfg, manager.Options{})
9696
Expect(err).NotTo(HaveOccurred())
9797

9898
instance, err := ControllerManagedBy(m).
@@ -106,7 +106,7 @@ var _ = Describe("application", func() {
106106

107107
It("should return an error if For function is not called", func() {
108108
By("creating a controller manager")
109-
m, err := manager.New(cfg, manager.Options{})
109+
m, err := manager.New(context.Background(), cfg, manager.Options{})
110110
Expect(err).NotTo(HaveOccurred())
111111

112112
instance, err := ControllerManagedBy(m).
@@ -118,7 +118,7 @@ var _ = Describe("application", func() {
118118

119119
It("should return an error if there is no GVK for an object, and thus we can't default the controller name", func() {
120120
By("creating a controller manager")
121-
m, err := manager.New(cfg, manager.Options{})
121+
m, err := manager.New(context.Background(), cfg, manager.Options{})
122122
Expect(err).NotTo(HaveOccurred())
123123

124124
By("creating a controller with a bad For type")
@@ -141,7 +141,7 @@ var _ = Describe("application", func() {
141141
}
142142

143143
By("creating a controller manager")
144-
m, err := manager.New(cfg, manager.Options{})
144+
m, err := manager.New(context.Background(), cfg, manager.Options{})
145145
Expect(err).NotTo(HaveOccurred())
146146

147147
instance, err := ControllerManagedBy(m).
@@ -164,7 +164,7 @@ var _ = Describe("application", func() {
164164
}
165165

166166
By("creating a controller manager")
167-
m, err := manager.New(cfg, manager.Options{})
167+
m, err := manager.New(context.Background(), cfg, manager.Options{})
168168
Expect(err).NotTo(HaveOccurred())
169169

170170
instance, err := ControllerManagedBy(m).
@@ -186,7 +186,7 @@ var _ = Describe("application", func() {
186186
}
187187

188188
By("creating a controller manager")
189-
m, err := manager.New(cfg, manager.Options{})
189+
m, err := manager.New(context.Background(), cfg, manager.Options{})
190190
Expect(err).NotTo(HaveOccurred())
191191

192192
instance, err := ControllerManagedBy(m).
@@ -209,7 +209,7 @@ var _ = Describe("application", func() {
209209
}
210210

211211
By("creating a controller manager")
212-
m, err := manager.New(cfg, manager.Options{})
212+
m, err := manager.New(context.Background(), cfg, manager.Options{})
213213
Expect(err).NotTo(HaveOccurred())
214214

215215
instance, err := ControllerManagedBy(m).
@@ -230,7 +230,7 @@ var _ = Describe("application", func() {
230230
}
231231

232232
By("creating a controller manager")
233-
m, err := manager.New(cfg, manager.Options{})
233+
m, err := manager.New(context.Background(), cfg, manager.Options{})
234234
Expect(err).NotTo(HaveOccurred())
235235

236236
instance, err := ControllerManagedBy(m).
@@ -244,7 +244,7 @@ var _ = Describe("application", func() {
244244

245245
It("should allow multiple controllers for the same kind", func() {
246246
By("creating a controller manager")
247-
m, err := manager.New(cfg, manager.Options{})
247+
m, err := manager.New(context.Background(), cfg, manager.Options{})
248248
Expect(err).NotTo(HaveOccurred())
249249

250250
By("registering the type in the Scheme")
@@ -273,7 +273,7 @@ var _ = Describe("application", func() {
273273

274274
Describe("Start with ControllerManagedBy", func() {
275275
It("should Reconcile Owns objects", func(done Done) {
276-
m, err := manager.New(cfg, manager.Options{})
276+
m, err := manager.New(context.Background(), cfg, manager.Options{})
277277
Expect(err).NotTo(HaveOccurred())
278278

279279
bldr := ControllerManagedBy(m).
@@ -284,7 +284,7 @@ var _ = Describe("application", func() {
284284
}, 10)
285285

286286
It("should Reconcile Watches objects", func(done Done) {
287-
m, err := manager.New(cfg, manager.Options{})
287+
m, err := manager.New(context.Background(), cfg, manager.Options{})
288288
Expect(err).NotTo(HaveOccurred())
289289

290290
bldr := ControllerManagedBy(m).
@@ -299,7 +299,7 @@ var _ = Describe("application", func() {
299299

300300
Describe("Set custom predicates", func() {
301301
It("should execute registered predicates only for assigned kind", func(done Done) {
302-
m, err := manager.New(cfg, manager.Options{})
302+
m, err := manager.New(context.Background(), cfg, manager.Options{})
303303
Expect(err).NotTo(HaveOccurred())
304304

305305
var (

pkg/builder/example_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func ExampleBuilder() {
4545

4646
var log = logf.Log.WithName("builder-examples")
4747

48-
mgr, err := manager.New(config.GetConfigOrDie(), manager.Options{})
48+
mgr, err := manager.New(context.Background(), config.GetConfigOrDie(), manager.Options{})
4949
if err != nil {
5050
log.Error(err, "could not create manager")
5151
os.Exit(1)

pkg/builder/example_webhook_test.go

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

1919
import (
20+
"context"
2021
"os"
2122

2223
"sigs.k8s.io/controller-runtime/pkg/builder"
@@ -39,7 +40,7 @@ var _ admission.Validator = &examplegroup.ChaosPod{}
3940
func ExampleWebhookBuilder() {
4041
var log = logf.Log.WithName("webhookbuilder-example")
4142

42-
mgr, err := manager.New(config.GetConfigOrDie(), manager.Options{})
43+
mgr, err := manager.New(context.Background(), config.GetConfigOrDie(), manager.Options{})
4344
if err != nil {
4445
log.Error(err, "could not create manager")
4546
os.Exit(1)

pkg/builder/webhook_test.go

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

1919
import (
20+
"context"
2021
"errors"
2122
"fmt"
2223
"net/http"
@@ -49,7 +50,7 @@ var _ = Describe("webhook", func() {
4950
Describe("New", func() {
5051
It("should scaffold a defaulting webhook if the type implements the Defaulter interface", func() {
5152
By("creating a controller manager")
52-
m, err := manager.New(cfg, manager.Options{})
53+
m, err := manager.New(context.Background(), cfg, manager.Options{})
5354
Expect(err).NotTo(HaveOccurred())
5455

5556
By("registering the type in the Scheme")
@@ -89,11 +90,11 @@ var _ = Describe("webhook", func() {
8990
}
9091
}`)
9192

92-
stopCh := make(chan struct{})
93-
close(stopCh)
93+
ctx, cancel := context.WithCancel(context.Background())
94+
cancel()
9495
// TODO: we may want to improve it to make it be able to inject dependencies,
9596
// but not always try to load certs and return not found error.
96-
err = svr.Start(stopCh)
97+
err = svr.Start(ctx)
9798
if err != nil && !os.IsNotExist(err) {
9899
Expect(err).NotTo(HaveOccurred())
99100
}
@@ -121,7 +122,7 @@ var _ = Describe("webhook", func() {
121122

122123
It("should scaffold a validating webhook if the type implements the Validator interface", func() {
123124
By("creating a controller manager")
124-
m, err := manager.New(cfg, manager.Options{})
125+
m, err := manager.New(context.Background(), cfg, manager.Options{})
125126
Expect(err).NotTo(HaveOccurred())
126127

127128
By("registering the type in the Scheme")
@@ -163,11 +164,11 @@ var _ = Describe("webhook", func() {
163164
}
164165
}`)
165166

166-
stopCh := make(chan struct{})
167-
close(stopCh)
167+
ctx, cancel := context.WithCancel(context.Background())
168+
cancel()
168169
// TODO: we may want to improve it to make it be able to inject dependencies,
169170
// but not always try to load certs and return not found error.
170-
err = svr.Start(stopCh)
171+
err = svr.Start(ctx)
171172
if err != nil && !os.IsNotExist(err) {
172173
Expect(err).NotTo(HaveOccurred())
173174
}
@@ -194,7 +195,7 @@ var _ = Describe("webhook", func() {
194195

195196
It("should scaffold defaulting and validating webhooks if the type implements both Defaulter and Validator interfaces", func() {
196197
By("creating a controller manager")
197-
m, err := manager.New(cfg, manager.Options{})
198+
m, err := manager.New(context.Background(), cfg, manager.Options{})
198199
Expect(err).NotTo(HaveOccurred())
199200

200201
By("registering the type in the Scheme")
@@ -234,11 +235,11 @@ var _ = Describe("webhook", func() {
234235
}
235236
}`)
236237

237-
stopCh := make(chan struct{})
238-
close(stopCh)
238+
ctx, cancel := context.WithCancel(context.Background())
239+
cancel()
239240
// TODO: we may want to improve it to make it be able to inject dependencies,
240241
// but not always try to load certs and return not found error.
241-
err = svr.Start(stopCh)
242+
err = svr.Start(ctx)
242243
if err != nil && !os.IsNotExist(err) {
243244
Expect(err).NotTo(HaveOccurred())
244245
}
@@ -269,7 +270,9 @@ var _ = Describe("webhook", func() {
269270

270271
It("should scaffold a validating webhook if the type implements the Validator interface to validate deletes", func() {
271272
By("creating a controller manager")
272-
m, err := manager.New(cfg, manager.Options{})
273+
ctx, cancel := context.WithCancel(context.Background())
274+
275+
m, err := manager.New(ctx, cfg, manager.Options{})
273276
Expect(err).NotTo(HaveOccurred())
274277

275278
By("registering the type in the Scheme")
@@ -308,11 +311,11 @@ var _ = Describe("webhook", func() {
308311
}
309312
}
310313
}`)
311-
stopCh := make(chan struct{})
312-
close(stopCh)
314+
315+
cancel()
313316
// TODO: we may want to improve it to make it be able to inject dependencies,
314317
// but not always try to load certs and return not found error.
315-
err = svr.Start(stopCh)
318+
err = svr.Start(ctx)
316319
if err != nil && !os.IsNotExist(err) {
317320
Expect(err).NotTo(HaveOccurred())
318321
}

pkg/cache/cache.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,12 @@ type Informers interface {
5858
// of the underlying object.
5959
GetInformerForKind(ctx context.Context, gvk schema.GroupVersionKind) (Informer, error)
6060

61-
// Start runs all the informers known to this cache until the given channel is closed.
61+
// Start runs all the informers known to this cache until the context is closed.
6262
// It blocks.
63-
Start(stopCh <-chan struct{}) error
63+
Start(ctx context.Context) error
6464

6565
// WaitForCacheSync waits for all the caches to sync. Returns false if it could not sync a cache.
66-
WaitForCacheSync(stop <-chan struct{}) bool
66+
WaitForCacheSync(ctx context.Context) bool
6767

6868
// Informers knows how to add indices to the caches (informers) that it manages.
6969
client.FieldIndexer

0 commit comments

Comments
 (0)