diff --git a/weed/util/log_buffer/log_read.go b/weed/util/log_buffer/log_read.go index c3dd0f288..0d044fc14 100644 --- a/weed/util/log_buffer/log_read.go +++ b/weed/util/log_buffer/log_read.go @@ -66,9 +66,17 @@ func (logBuffer *LogBuffer) LoopProcessLogData(readerName string, startPosition isDone = true return } + logBuffer.RLock() lastTsNs := logBuffer.LastTsNs - for lastTsNs == logBuffer.LastTsNs { + logBuffer.RUnlock() + loopTsNs := lastTsNs // make a copy + + for lastTsNs == loopTsNs { if waitForDataFn() { + // Update loopTsNs and loop again + logBuffer.RLock() + loopTsNs = logBuffer.LastTsNs + logBuffer.RUnlock() continue } else { isDone = true