|
|
@ -338,7 +338,7 @@ func (p *OpenMetricsParser) Next() (Entry, error) {
|
|
|
|
var ts float64
|
|
|
|
var ts float64
|
|
|
|
// A float is enough to hold what we need for millisecond resolution.
|
|
|
|
// A float is enough to hold what we need for millisecond resolution.
|
|
|
|
if ts, err = parseFloat(yoloString(p.l.buf()[1:])); err != nil {
|
|
|
|
if ts, err = parseFloat(yoloString(p.l.buf()[1:])); err != nil {
|
|
|
|
return EntryInvalid, fmt.Errorf("%v while parsing: %q", err, p.l.b[p.start:p.l.i])
|
|
|
|
return EntryInvalid, fmt.Errorf("%w while parsing: %q", err, p.l.b[p.start:p.l.i])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if math.IsNaN(ts) || math.IsInf(ts, 0) {
|
|
|
|
if math.IsNaN(ts) || math.IsInf(ts, 0) {
|
|
|
|
return EntryInvalid, fmt.Errorf("invalid timestamp %f", ts)
|
|
|
|
return EntryInvalid, fmt.Errorf("invalid timestamp %f", ts)
|
|
|
@ -391,7 +391,7 @@ func (p *OpenMetricsParser) parseComment() error {
|
|
|
|
var ts float64
|
|
|
|
var ts float64
|
|
|
|
// A float is enough to hold what we need for millisecond resolution.
|
|
|
|
// A float is enough to hold what we need for millisecond resolution.
|
|
|
|
if ts, err = parseFloat(yoloString(p.l.buf()[1:])); err != nil {
|
|
|
|
if ts, err = parseFloat(yoloString(p.l.buf()[1:])); err != nil {
|
|
|
|
return fmt.Errorf("%v while parsing: %q", err, p.l.b[p.start:p.l.i])
|
|
|
|
return fmt.Errorf("%w while parsing: %q", err, p.l.b[p.start:p.l.i])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if math.IsNaN(ts) || math.IsInf(ts, 0) {
|
|
|
|
if math.IsNaN(ts) || math.IsInf(ts, 0) {
|
|
|
|
return fmt.Errorf("invalid exemplar timestamp %f", ts)
|
|
|
|
return fmt.Errorf("invalid exemplar timestamp %f", ts)
|
|
|
@ -461,7 +461,7 @@ func (p *OpenMetricsParser) getFloatValue(t token, after string) (float64, error
|
|
|
|
}
|
|
|
|
}
|
|
|
|
val, err := parseFloat(yoloString(p.l.buf()[1:]))
|
|
|
|
val, err := parseFloat(yoloString(p.l.buf()[1:]))
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return 0, fmt.Errorf("%v while parsing: %q", err, p.l.b[p.start:p.l.i])
|
|
|
|
return 0, fmt.Errorf("%w while parsing: %q", err, p.l.b[p.start:p.l.i])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Ensure canonical NaN value.
|
|
|
|
// Ensure canonical NaN value.
|
|
|
|
if math.IsNaN(p.exemplarVal) {
|
|
|
|
if math.IsNaN(p.exemplarVal) {
|
|
|
|