diff --git a/test/e2e/apps/daemon_restart.go b/test/e2e/apps/daemon_restart.go index c9845b143d1..ab8d9e34f7d 100644 --- a/test/e2e/apps/daemon_restart.go +++ b/test/e2e/apps/daemon_restart.go @@ -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) {