From 0d765598dfc4164a86d28021c8ead01a8cae743c Mon Sep 17 00:00:00 2001 From: hantmac Date: Sun, 23 Feb 2020 16:33:18 +0800 Subject: [PATCH 1/2] bug fix: fix concurrent map write error --- backend/utils/chan.go | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/backend/utils/chan.go b/backend/utils/chan.go index 7b63ac0f..03112029 100644 --- a/backend/utils/chan.go +++ b/backend/utils/chan.go @@ -1,29 +1,35 @@ package utils +import ( + "fmt" + "sync" +) + var TaskExecChanMap = NewChanMap() type ChanMap struct { - m map[string]chan string + m sync.Map } func NewChanMap() *ChanMap { - return &ChanMap{m: make(map[string]chan string)} + return &ChanMap{m: sync.Map{}} } func (cm *ChanMap) Chan(key string) chan string { - if ch, ok := cm.m[key]; ok { - return ch + if ch, ok := cm.m.Load(key); ok { + return ch.(interface{}).(chan string) } ch := make(chan string, 10) - cm.m[key] = ch + cm.m.Store(key, ch) return ch } func (cm *ChanMap) ChanBlocked(key string) chan string { - if ch, ok := cm.m[key]; ok { - return ch + if ch, ok := cm.m.Load(key); ok { + return ch.(interface{}).(chan string) } + fmt.Println("@@####@@@@#@####$@@#") ch := make(chan string) - cm.m[key] = ch + cm.m.Store(key, ch) return ch } From 7d81c013a6f3e9a9147dba06d3e31854e10a5c82 Mon Sep 17 00:00:00 2001 From: hantmac Date: Sun, 23 Feb 2020 16:35:38 +0800 Subject: [PATCH 2/2] move redundant log --- backend/utils/chan.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/utils/chan.go b/backend/utils/chan.go index 03112029..7fb4cea3 100644 --- a/backend/utils/chan.go +++ b/backend/utils/chan.go @@ -1,7 +1,6 @@ package utils import ( - "fmt" "sync" ) @@ -28,7 +27,6 @@ func (cm *ChanMap) ChanBlocked(key string) chan string { if ch, ok := cm.m.Load(key); ok { return ch.(interface{}).(chan string) } - fmt.Println("@@####@@@@#@####$@@#") ch := make(chan string) cm.m.Store(key, ch) return ch