Skip to content

Commit

Permalink
Restrict to Go 1.14 functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
Christian Schneider committed Feb 5, 2024
1 parent 4943c97 commit 84ed960
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions pkg/metrics/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package metrics

import (
"fmt"
"io"
"os"
"strconv"
"strings"
Expand Down Expand Up @@ -151,15 +152,25 @@ func (p *Parser) stateFileName(metricID string) string {
// readMetricState parses the metric state from the configured path.
// If the file does not exist, an empty state is returned.
func (p *Parser) readMetricState(metricID string) (*metricState, error) {
data, err := os.ReadFile(p.stateFileName(metricID))
state := &metricState{}
f, err := os.Open(p.stateFileName(metricID))
if err != nil {
// The file does not exist for new metrics.
if os.IsNotExist(err) {
return state, nil
}
return state, err
}
defer f.Close()

var data []byte
if info, err := f.Stat(); err == nil {
data = make([]byte, int(info.Size()))
}
if _, err := f.Read(data); err != nil && err != io.EOF {
return state, err
}

err = yaml.UnmarshalStrict(data, &state.monotonic)
state.lastWritten = now()
return state, err
Expand All @@ -171,7 +182,13 @@ func (p *Parser) writeMetricState(metricID string, state *metricState) error {
if err != nil {
return err
}
return os.WriteFile(p.stateFileName(metricID), out, 0644)
f, err := os.OpenFile(p.stateFileName(metricID), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
return err
}
_, err = f.Write(out)
f.Close()
return err
}

// getMetricState returns the state of the given metric.
Expand Down

0 comments on commit 84ed960

Please sign in to comment.