diff --git a/tsdb/wal/watcher.go b/tsdb/wal/watcher.go index abd7bdc77e..27a2739b76 100644 --- a/tsdb/wal/watcher.go +++ b/tsdb/wal/watcher.go @@ -391,7 +391,7 @@ func (w *Watcher) watch(segmentNum int, tail bool) error { // Ignore errors reading to end of segment whilst replaying the WAL. if !tail { - if err != nil && err != io.EOF { + if err != nil && errors.Cause(err) != io.EOF { level.Warn(w.logger).Log("msg", "Ignoring error reading to end of segment, may have dropped data", "err", err) } else if reader.Offset() != size { level.Warn(w.logger).Log("msg", "Expected to have read whole segment, may have dropped data", "segment", segmentNum, "read", reader.Offset(), "size", size) @@ -400,7 +400,7 @@ func (w *Watcher) watch(segmentNum int, tail bool) error { } // Otherwise, when we are tailing, non-EOFs are fatal. - if err != io.EOF { + if errors.Cause(err) != io.EOF { return err } @@ -411,7 +411,7 @@ func (w *Watcher) watch(segmentNum int, tail bool) error { // Ignore all errors reading to end of segment whilst replaying the WAL. if !tail { - if err != nil && err != io.EOF { + if err != nil && errors.Cause(err) != io.EOF { level.Warn(w.logger).Log("msg", "Ignoring error reading to end of segment, may have dropped data", "segment", segmentNum, "err", err) } else if reader.Offset() != size { level.Warn(w.logger).Log("msg", "Expected to have read whole segment, may have dropped data", "segment", segmentNum, "read", reader.Offset(), "size", size) @@ -420,7 +420,7 @@ func (w *Watcher) watch(segmentNum int, tail bool) error { } // Otherwise, when we are tailing, non-EOFs are fatal. - if err != io.EOF { + if errors.Cause(err) != io.EOF { return err } } @@ -516,7 +516,7 @@ func (w *Watcher) readSegment(r *LiveReader, segmentNum int, tail bool) error { return errors.New("unknown TSDB record type") } } - return r.Err() + return errors.Wrapf(r.Err(), "segment %d: %v", segmentNum, r.Err()) } func (w *Watcher) SetStartTime(t time.Time) { @@ -565,7 +565,7 @@ func (w *Watcher) readCheckpoint(checkpointDir string) error { defer sr.Close() r := NewLiveReader(w.logger, w.readerMetrics, sr) - if err := w.readSegment(r, index, false); err != io.EOF && err != nil { + if err := w.readSegment(r, index, false); errors.Cause(err) != io.EOF && err != nil { return errors.Wrap(err, "readSegment") }