From 264e66d0a1ef35f194ccd1fcaac48d069656b04f Mon Sep 17 00:00:00 2001 From: Felix Kunde Date: Mon, 16 May 2022 12:36:27 +0200 Subject: [PATCH] unlock mutex after handling event, now with non-blocking default case --- pkg/cluster/cluster.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index e1d118249..813bec297 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -1034,10 +1034,15 @@ func (c *Cluster) processPodEvent(obj interface{}) error { c.podSubscribersMu.RLock() subscriber, ok := c.podSubscribers[spec.NamespacedName(event.PodName)] - c.podSubscribersMu.RUnlock() if ok { - subscriber <- event + select { + case subscriber <- event: + default: + // we end up here when there is no receiver of the channel + // avoiding a deadlock: https://gobyexample.com/non-blocking-channel-operations + } } + c.podSubscribersMu.RUnlock() return nil }