From f714660ca9b36b23b070230a6c080892d1a1792c Mon Sep 17 00:00:00 2001 From: Fenny <25108519+Fenny@users.noreply.github.com> Date: Tue, 17 Nov 2020 13:15:32 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A9=B9=20update=20mutex=20logic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: RW <7063188+ReneWerner87@users.noreply.github.com> --- middleware/cache/store.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/middleware/cache/store.go b/middleware/cache/store.go index 3d829d04..2ca8331b 100644 --- a/middleware/cache/store.go +++ b/middleware/cache/store.go @@ -21,30 +21,28 @@ type storage struct { } func (s *storage) get(key string) (e *entry) { - s.mux.Lock() - defer s.mux.Lock() if s.cfg.Storage != nil { raw, err := s.cfg.Storage.Get(key) if err != nil || raw == nil { - return + return e } if _, err := e.UnmarshalMsg(raw); err != nil { - return + return e } body, err := s.cfg.Storage.Get(key + "_body") if err != nil || body == nil { - return + return e } e.body = body } else { + s.mux.Lock() e = s.entries[key] + s.mux.Lock() } - return + return e } func (s *storage) set(key string, e *entry) { - s.mux.Lock() - defer s.mux.Lock() if s.cfg.Storage != nil { // seperate body since we dont want to encode big payloads body := e.body @@ -55,17 +53,19 @@ func (s *storage) set(key string, e *entry) { _ = s.cfg.Storage.Set(key+"_body", body, s.cfg.Expiration) } } else { + s.mux.Lock() s.entries[key] = e + s.mux.Unlock() } } func (s *storage) delete(key string) { - s.mux.Lock() - defer s.mux.Lock() if s.cfg.Storage != nil { _ = s.cfg.Storage.Delete(key) _ = s.cfg.Storage.Delete(key + "_body") } else { + s.mux.Lock() delete(s.entries, key) + s.mux.Unlock() } }