From 2976a78f57a839a0263e4b43d632a867d231b9fc Mon Sep 17 00:00:00 2001 From: Waldemar Quevedo Date: Thu, 15 Apr 2021 09:16:02 -0700 Subject: [PATCH] js: msgblock close fix Also swaps order of cleaning up resource directory in cluster tests. --- server/filestore.go | 4 +++- server/test_test.go | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/server/filestore.go b/server/filestore.go index 3eb0ba49..fd602af0 100644 --- a/server/filestore.go +++ b/server/filestore.go @@ -118,6 +118,7 @@ type msgBlock struct { fch chan struct{} qch chan struct{} lchk [8]byte + closed bool } // Write through caching layer that is also used on loading messages. @@ -3176,9 +3177,10 @@ func (mb *msgBlock) close(sync bool) { mb.mu.Lock() defer mb.mu.Unlock() - if mb.qch == nil { + if mb.closed { return } + mb.closed = true // Close cache mb.clearCacheAndOffset() diff --git a/server/test_test.go b/server/test_test.go index 6928e33d..3863f688 100644 --- a/server/test_test.go +++ b/server/test_test.go @@ -182,13 +182,14 @@ func (c *cluster) shutdown() { return } for i, s := range c.servers { + sd := s.StoreDir() + s.Shutdown() if cf := c.opts[i].ConfigFile; cf != "" { os.RemoveAll(cf) } - if sd := s.StoreDir(); sd != "" { + if sd != _EMPTY_ { os.RemoveAll(sd) } - s.Shutdown() } }