diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-05-10 03:48:35 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-05-10 03:48:35 -0700 |
| commit | 6bf3eb69cb9abd02e1d63ecdee485d198a3cab9a (patch) | |
| tree | f1cf35c6d8322db60b36793cf8bf1f0d0fdc537c /weed/util/log_buffer | |
| parent | 78afb8bf4699f85083160f8bfee2f04493985cd1 (diff) | |
| download | seaweedfs-6bf3eb69cb9abd02e1d63ecdee485d198a3cab9a.tar.xz seaweedfs-6bf3eb69cb9abd02e1d63ecdee485d198a3cab9a.zip | |
async chan write read, no write for closed chan
Diffstat (limited to 'weed/util/log_buffer')
| -rw-r--r-- | weed/util/log_buffer/log_buffer.go | 11 |
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() } } |
