aboutsummaryrefslogtreecommitdiff
path: root/weed/util
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-05-10 03:48:35 -0700
committerChris Lu <chris.lu@gmail.com>2020-05-10 03:48:35 -0700
commit6bf3eb69cb9abd02e1d63ecdee485d198a3cab9a (patch)
treef1cf35c6d8322db60b36793cf8bf1f0d0fdc537c /weed/util
parent78afb8bf4699f85083160f8bfee2f04493985cd1 (diff)
downloadseaweedfs-6bf3eb69cb9abd02e1d63ecdee485d198a3cab9a.tar.xz
seaweedfs-6bf3eb69cb9abd02e1d63ecdee485d198a3cab9a.zip
async chan write read, no write for closed chan
Diffstat (limited to 'weed/util')
-rw-r--r--weed/util/log_buffer/log_buffer.go11
1 files changed, 8 insertions, 3 deletions
diff --git a/weed/util/log_buffer/log_buffer.go b/weed/util/log_buffer/log_buffer.go
index 6ba7f3737..67c44dc57 100644
--- a/weed/util/log_buffer/log_buffer.go
+++ b/weed/util/log_buffer/log_buffer.go
@@ -98,13 +98,14 @@ func (m *LogBuffer) AddToBuffer(partitionKey, data []byte) {
}
func (m *LogBuffer) Shutdown() {
+ m.Lock()
+ defer m.Unlock()
+
if m.isStopping {
return
}
m.isStopping = true
- m.Lock()
toFlush := m.copyToFlush()
- m.Unlock()
m.flushChan <- toFlush
close(m.flushChan)
}
@@ -123,10 +124,14 @@ func (m *LogBuffer) loopInterval() {
for !m.isStopping {
time.Sleep(m.flushInterval)
m.Lock()
+ if m.isStopping {
+ m.Unlock()
+ return
+ }
// println("loop interval")
toFlush := m.copyToFlush()
- m.Unlock()
m.flushChan <- toFlush
+ m.Unlock()
}
}