From 1113c3a766e27ba96b3ab7de9b0cf2325a05d4bf Mon Sep 17 00:00:00 2001 From: Kane York Date: Wed, 27 Jan 2016 19:40:17 -0800 Subject: [PATCH] lock once during multichan publish --- socketserver/server/publisher.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/socketserver/server/publisher.go b/socketserver/server/publisher.go index 366f1065..45bfd9f3 100644 --- a/socketserver/server/publisher.go +++ b/socketserver/server/publisher.go @@ -230,9 +230,12 @@ func HTTPBackendCachedPublish(w http.ResponseWriter, r *http.Request) { count = PublishToChannel(channel, msg) } else if cacheinfo.Caching == CacheTypeLastOnly && cacheinfo.Target == MsgTargetTypeMultichat { channels := strings.Split(channel, ",") + var dummyLock sync.Mutex + CachedLSMLock.Lock() for _, channel := range channels { - SaveLastMessage(CachedLastMessages, &CachedLSMLock, cmd, channel, timestamp, json, deleteMode) + SaveLastMessage(CachedLastMessages, &dummyLock, cmd, channel, timestamp, json, deleteMode) } + CachedLSMLock.Unlock() count = PublishToMultiple(channels, msg) }