diff options
Diffstat (limited to 'weed/util/log_buffer/sealed_buffer.go')
| -rw-r--r-- | weed/util/log_buffer/sealed_buffer.go | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/weed/util/log_buffer/sealed_buffer.go b/weed/util/log_buffer/sealed_buffer.go index 397dab1d4..109cb3862 100644 --- a/weed/util/log_buffer/sealed_buffer.go +++ b/weed/util/log_buffer/sealed_buffer.go @@ -51,16 +51,20 @@ func (sbs *SealedBuffers) SealBuffer(startTime, stopTime time.Time, buf []byte, return oldMemBuffer.buf } -func (mb *MemBuffer) locateByTs(lastReadTime time.Time) (pos int) { +func (mb *MemBuffer) locateByTs(lastReadTime time.Time) (pos int, err error) { lastReadTs := lastReadTime.UnixNano() for pos < len(mb.buf) { - size, t := readTs(mb.buf, pos) + size, t, readErr := readTs(mb.buf, pos) + if readErr != nil { + // Return error if buffer is corrupted + return 0, fmt.Errorf("locateByTs: buffer corruption at pos %d: %w", pos, readErr) + } if t > lastReadTs { - return + return pos, nil } pos += size + 4 } - return len(mb.buf) + return len(mb.buf), nil } func (mb *MemBuffer) String() string { |
