Browse Source

Fixes unlocked read from logBuffer.LastTsNs that is racey. (#5536)

pull/5539/head
M@ 9 months ago
committed by GitHub
parent
commit
abf01a0eb7
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 10
      weed/util/log_buffer/log_read.go

10
weed/util/log_buffer/log_read.go

@ -66,9 +66,17 @@ func (logBuffer *LogBuffer) LoopProcessLogData(readerName string, startPosition
isDone = true isDone = true
return return
} }
logBuffer.RLock()
lastTsNs := logBuffer.LastTsNs lastTsNs := logBuffer.LastTsNs
for lastTsNs == logBuffer.LastTsNs {
logBuffer.RUnlock()
loopTsNs := lastTsNs // make a copy
for lastTsNs == loopTsNs {
if waitForDataFn() { if waitForDataFn() {
// Update loopTsNs and loop again
logBuffer.RLock()
loopTsNs = logBuffer.LastTsNs
logBuffer.RUnlock()
continue continue
} else { } else {
isDone = true isDone = true

Loading…
Cancel
Save