From 5880c657c3211fd5a038baf310afc358ac8406cb Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Mon, 8 Jun 2020 13:10:07 -0700 Subject: [PATCH] Fix map concurrent read/write (cherry picked from commit 72db28d5eaf6435816d5826885aed144795cc05b) Signed-off-by: niusmallnan --- pkg/schemaserver/subscribe/watcher.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/schemaserver/subscribe/watcher.go b/pkg/schemaserver/subscribe/watcher.go index 1bedc92..a08f46e 100644 --- a/pkg/schemaserver/subscribe/watcher.go +++ b/pkg/schemaserver/subscribe/watcher.go @@ -126,8 +126,13 @@ func (s *WatchSession) watch(conn *websocket.Conn, resp chan types.APIEvent) err if sub.Stop { s.stop(sub.ResourceType, resp) - } else if _, ok := s.watchers[sub.ResourceType]; !ok { - s.add(sub.ResourceType, sub.ResourceVersion, resp) + } else { + s.Lock() + _, ok := s.watchers[sub.ResourceType] + s.Unlock() + if !ok { + s.add(sub.ResourceType, sub.ResourceVersion, resp) + } } } }