diff options
| author | Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> | 2022-10-16 23:28:56 +0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-16 11:28:56 -0700 |
| commit | ee38ab858125d68c7357133a9644dbf4dd6479a3 (patch) | |
| tree | 8b459151d7457e35efcac135d7a56f955d09f7ee /weed/util/log_buffer/log_buffer.go | |
| parent | 7836f7574e65bd9b7a8b8f1beda97b21cd279da0 (diff) | |
| download | seaweedfs-ee38ab858125d68c7357133a9644dbf4dd6479a3.tar.xz seaweedfs-ee38ab858125d68c7357133a9644dbf4dd6479a3.zip | |
avoid data race of LogBuffer isStopping (#3859)
Diffstat (limited to 'weed/util/log_buffer/log_buffer.go')
| -rw-r--r-- | weed/util/log_buffer/log_buffer.go | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/weed/util/log_buffer/log_buffer.go b/weed/util/log_buffer/log_buffer.go index 86857b563..2d12a5bf2 100644 --- a/weed/util/log_buffer/log_buffer.go +++ b/weed/util/log_buffer/log_buffer.go @@ -118,6 +118,13 @@ func (m *LogBuffer) AddToBuffer(partitionKey, data []byte, processingTsNs int64) } +func (m *LogBuffer) IsStopping() bool { + m.RLock() + defer m.RUnlock() + + return m.isStopping +} + func (m *LogBuffer) Shutdown() { m.Lock() defer m.Unlock() @@ -144,13 +151,12 @@ func (m *LogBuffer) loopFlush() { } func (m *LogBuffer) loopInterval() { - for !m.isStopping { + for !m.IsStopping() { time.Sleep(m.flushInterval) - m.Lock() - if m.isStopping { - m.Unlock() + if m.IsStopping() { return } + m.Lock() toFlush := m.copyToFlush() m.Unlock() if toFlush != nil { |
