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

This commit is contained in:
M@
2024-04-25 18:46:12 -04:00
committed by GitHub
parent 855607c536
commit abf01a0eb7

View File

@@ -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