package wal import ( "errors" "io" "github.com/prometheus/prometheus/tsdb/wal" ) // If startSegment is <0, it means all the segments. func NewWalReader(dir string, startSegment int) (*wal.Reader, io.Closer, error) { var ( segmentReader io.ReadCloser err error ) if startSegment < 0 { segmentReader, err = wal.NewSegmentsReader(dir) if err != nil { return nil, nil, err } } else { first, last, err := wal.Segments(dir) if err != nil { return nil, nil, err } if startSegment > last { return nil, nil, errors.New("start segment is beyond the last WAL segment") } if first > startSegment { startSegment = first } segmentReader, err = wal.NewSegmentsRangeReader(wal.SegmentRange{ Dir: dir, First: startSegment, Last: -1, // Till the end. }) if err != nil { return nil, nil, err } } return wal.NewReader(segmentReader), segmentReader, nil }