diff options
| author | chrislu <chris.lu@gmail.com> | 2023-08-20 11:22:44 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2023-08-20 12:13:06 -0700 |
| commit | 3e9c32a3f0e20bb1663aa3326c4e1d50f44f66c4 (patch) | |
| tree | 866010d370d7811e5920f5f75463640e9738fe31 | |
| parent | 1e72579ac7d9dfb4968e8025cd8c715feeecbb5e (diff) | |
| download | seaweedfs-3e9c32a3f0e20bb1663aa3326c4e1d50f44f66c4.tar.xz seaweedfs-3e9c32a3f0e20bb1663aa3326c4e1d50f44f66c4.zip | |
refactoring to use atomic bool
fix compilation
| -rw-r--r-- | weed/util/log_buffer/log_buffer.go | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/weed/util/log_buffer/log_buffer.go b/weed/util/log_buffer/log_buffer.go index 2d12a5bf2..bd124908e 100644 --- a/weed/util/log_buffer/log_buffer.go +++ b/weed/util/log_buffer/log_buffer.go @@ -3,6 +3,7 @@ package log_buffer import ( "bytes" "sync" + "sync/atomic" "time" "google.golang.org/protobuf/proto" @@ -34,7 +35,7 @@ type LogBuffer struct { flushInterval time.Duration flushFn func(startTime, stopTime time.Time, buf []byte) notifyFn func() - isStopping bool + isStopping *atomic.Bool flushChan chan *dataToFlush lastTsNs int64 sync.RWMutex @@ -50,6 +51,7 @@ func NewLogBuffer(name string, flushInterval time.Duration, flushFn func(startTi flushFn: flushFn, notifyFn: notifyFn, flushChan: make(chan *dataToFlush, 256), + isStopping: new(atomic.Bool), } go lb.loopFlush() go lb.loopInterval() @@ -119,20 +121,14 @@ func (m *LogBuffer) AddToBuffer(partitionKey, data []byte, processingTsNs int64) } func (m *LogBuffer) IsStopping() bool { - m.RLock() - defer m.RUnlock() - - return m.isStopping + return m.isStopping.Load() } func (m *LogBuffer) Shutdown() { - m.Lock() - defer m.Unlock() - - if m.isStopping { + isAlreadyStopped := m.isStopping.Swap(true) + if isAlreadyStopped { return } - m.isStopping = true toFlush := m.copyToFlush() m.flushChan <- toFlush close(m.flushChan) |
