From 631e56a7e27202529172fe307c7e324a74c56271 Mon Sep 17 00:00:00 2001
From: fanjiyun <fan.jiyun@zte.com.cn>
Date: Sat, 24 Oct 2020 11:47:53 +0800
Subject: [PATCH] docker stats: fix 'panic: close of closed channel'

Signed-off-by: fanjiyun <fan.jiyun@zte.com.cn>
Upstream-commit: 1b8826beee9c86b76091931991f037c1410d0ea5
Component: engine
---
 components/engine/pkg/pubsub/publisher.go | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/components/engine/pkg/pubsub/publisher.go b/components/engine/pkg/pubsub/publisher.go
index 32b2f189259..e53d17d515a 100644
--- a/components/engine/pkg/pubsub/publisher.go
+++ b/components/engine/pkg/pubsub/publisher.go
@@ -66,8 +66,11 @@ func (p *Publisher) SubscribeTopicWithBuffer(topic topicFunc, buffer int) chan i
 // Evict removes the specified subscriber from receiving any more messages.
 func (p *Publisher) Evict(sub chan interface{}) {
 	p.m.Lock()
-	delete(p.subscribers, sub)
-	close(sub)
+	_, exists := p.subscribers[sub]
+	if exists {
+		delete(p.subscribers, sub)
+		close(sub)
+	}
 	p.m.Unlock()
 }
 
