aboutsummaryrefslogtreecommitdiff
path: root/weed/util/log_buffer/log_buffer.go
diff options
context:
space:
mode:
authorKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-10-16 23:28:56 +0500
committerGitHub <noreply@github.com>2022-10-16 11:28:56 -0700
commitee38ab858125d68c7357133a9644dbf4dd6479a3 (patch)
tree8b459151d7457e35efcac135d7a56f955d09f7ee /weed/util/log_buffer/log_buffer.go
parent7836f7574e65bd9b7a8b8f1beda97b21cd279da0 (diff)
downloadseaweedfs-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.go14
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 {