MCPcopy Create free account
hub / github.com/prometheus/procfs / readCommitStats

Method readCommitStats

btrfs/get.go:258–308  ·  view source on GitHub ↗

readCommitStats returns the commit_stats information for commit stats metrics.

(p string)

Source from the content-addressed store, hash-verified

256
257// readCommitStats returns the commit_stats information for commit stats metrics.
258func (r *reader) readCommitStats(p string) CommitStats {
259 stats := CommitStats{}
260
261 f, err := os.Open(path.Join(r.path, p))
262 if err != nil {
263 // if commit_stats not found. maybe btrfs version < 6.0
264 if !os.IsNotExist(err) {
265 r.err = err
266 }
267 return stats
268 }
269 defer f.Close()
270
271 scanner := bufio.NewScanner(f)
272
273 for scanner.Scan() {
274 line := scanner.Text()
275 parts := strings.Fields(scanner.Text())
276 // require <key> <value>
277 if len(parts) != 2 {
278 r.err = fmt.Errorf("invalid commit_stats line %q", line)
279 return stats
280 }
281
282 value, err := strconv.ParseUint(parts[1], 10, 64)
283 if err != nil {
284 r.err = fmt.Errorf("error parsing commit_stats line: %w", err)
285 return stats
286 }
287
288 switch metricName := parts[0]; metricName {
289 case "commits":
290 stats.Commits = value
291 case "last_commit_ms":
292 stats.LastCommitMs = value
293 case "max_commit_ms":
294 stats.MaxCommitMs = value
295 case "total_commit_ms":
296 stats.TotalCommitMs = value
297 default:
298 continue
299 }
300 }
301
302 if err := scanner.Err(); err != nil {
303 r.err = fmt.Errorf("error scanning commit_stats file: %w", err)
304 return stats
305 }
306
307 return stats
308}

Callers 1

readFilesystemStatsMethod · 0.95

Calls 1

ErrMethod · 0.80

Tested by

no test coverage detected