in core/log/metric/reader.go [39:69]
func (r *defaultMetricLogReader) ReadMetrics(nameList []string, fileNo uint32, startOffset uint64, maxLines uint32) ([]*base.MetricItem, error) {
if len(nameList) == 0 {
return make([]*base.MetricItem, 0), nil
}
// startOffset: the offset of the first file to read
items, shouldContinue, err := r.readMetricsInOneFile(nameList[fileNo], startOffset, maxLines, 0, 0)
if err != nil {
return nil, err
}
if !shouldContinue {
return items, nil
}
fileNo++
// Continue reading until the size or time does not satisfy the condition
for {
if int(fileNo) >= len(nameList) || len(items) >= int(maxLines) {
// No files to read.
break
}
arr, shouldContinue, err := r.readMetricsInOneFile(nameList[fileNo], 0, maxLines, getLatestSecond(items), uint32(len(items)))
if err != nil {
return nil, err
}
items = append(items, arr...)
if !shouldContinue {
break
}
fileNo++
}
return items, nil
}