mirror of
https://github.com/kubernetes/client-go.git
synced 2025-08-29 20:15:08 +00:00
If, for whatever reason, the context was context.Background(), the additional goroutine was started and then got stuck forever because context.Background().Done() is a nil channel. Found when indirectly instantiating a broadcaster with such a context: found unexpected goroutines: [Goroutine 9106 in state chan receive (nil chan), with k8s.io/kubernetes/vendor/k8s.io/client-go/tools/record.NewBroadcaster.func1 on top of the stack: goroutine 9106 [chan receive (nil chan)]: k8s.io/kubernetes/vendor/k8s.io/client-go/tools/record.NewBroadcaster.func1() /home/prow/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/tools/record/event.go:206 +0x2c created by k8s.io/kubernetes/vendor/k8s.io/client-go/tools/record.NewBroadcaster in goroutine 8957 /home/prow/go/src/k8s.io/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/tools/record/event.go:205 +0x1a5 This can be fixed by checking for a nil channel. Another problem also gets addressed: if Shutdown was called without canceling the context, the goroutine also didn't stop. Now it waits for the cancelation context and thus terminates in both cases. Kubernetes-commit: eed6e29a5b8cfaa20fbc426541d9c74105d430ee |
||
---|---|---|
.. | ||
util | ||
doc.go | ||
event_test.go | ||
event.go | ||
events_cache_test.go | ||
events_cache.go | ||
fake.go | ||
main_test.go | ||
OWNERS |