mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-03 10:17:46 +00:00
e2e apps: fix "context canceled" error
Using the ctx of the ginkgo.BeforeEach in callbacks that are invoked after the BeforeEach is done causes "context canceled" errors. Previously, this code used context.TODO(). The best solution is to create a new context and cancel it during test cleanup, then that context can be used for the API calls and as stop channel.
This commit is contained in:
@@ -216,7 +216,6 @@ var _ = SIGDescribe("DaemonRestart [Disruptive]", func() {
|
||||
var config testutils.RCConfig
|
||||
var controller cache.Controller
|
||||
var newPods cache.Store
|
||||
var stopCh chan struct{}
|
||||
var tracker *podTracker
|
||||
|
||||
ginkgo.BeforeEach(func(ctx context.Context) {
|
||||
@@ -237,18 +236,21 @@ var _ = SIGDescribe("DaemonRestart [Disruptive]", func() {
|
||||
framework.ExpectNoError(e2erc.RunRC(ctx, config))
|
||||
replacePods(*config.CreatedPods, existingPods)
|
||||
|
||||
stopCh = make(chan struct{})
|
||||
// The following code continues to run after the BeforeEach and thus
|
||||
// must not use ctx.
|
||||
backgroundCtx, cancel := context.WithCancel(context.Background())
|
||||
ginkgo.DeferCleanup(cancel)
|
||||
tracker = newPodTracker()
|
||||
newPods, controller = cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {
|
||||
options.LabelSelector = labelSelector.String()
|
||||
obj, err := f.ClientSet.CoreV1().Pods(ns).List(ctx, options)
|
||||
obj, err := f.ClientSet.CoreV1().Pods(ns).List(backgroundCtx, options)
|
||||
return runtime.Object(obj), err
|
||||
},
|
||||
WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
|
||||
options.LabelSelector = labelSelector.String()
|
||||
return f.ClientSet.CoreV1().Pods(ns).Watch(ctx, options)
|
||||
return f.ClientSet.CoreV1().Pods(ns).Watch(backgroundCtx, options)
|
||||
},
|
||||
},
|
||||
&v1.Pod{},
|
||||
@@ -265,11 +267,7 @@ var _ = SIGDescribe("DaemonRestart [Disruptive]", func() {
|
||||
},
|
||||
},
|
||||
)
|
||||
go controller.Run(stopCh)
|
||||
})
|
||||
|
||||
ginkgo.AfterEach(func() {
|
||||
close(stopCh)
|
||||
go controller.Run(backgroundCtx.Done())
|
||||
})
|
||||
|
||||
ginkgo.It("Controller Manager should not create/delete replicas across restart", func(ctx context.Context) {
|
||||
|
Reference in New Issue
Block a user