mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 09:52:49 +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:
parent
02b6b6520a
commit
2296fc4b1f
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user