From 0e5ba0c56fe37c70abc72f121df98a2648d628d5 Mon Sep 17 00:00:00 2001 From: Alan Bernstein Date: Fri, 21 Apr 2017 12:05:35 -0500 Subject: [PATCH] Add stats to snapshot --- fragment.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/fragment.go b/fragment.go index 7c6cff24d..1dbc2c64d 100644 --- a/fragment.go +++ b/fragment.go @@ -995,15 +995,11 @@ func (f *Fragment) Snapshot() error { defer f.mu.Unlock() return f.snapshot() } -func track(start time.Time, name string, logger *log.Logger) { - elapsed := time.Since(start) - logger.Printf("%s took %s", name, elapsed) -} func (f *Fragment) snapshot() error { logger := f.logger() logger.Printf("fragment: snapshotting %s/%s/%s/%d", f.db, f.frame, f.view, f.slice) - defer track(time.Now(), fmt.Sprintf("fragment: snapshot complete %s/%s/%s/%d", f.db, f.frame, f.view, f.slice), logger) + start := time.Now() // Create a temporary file to snapshot to. snapshotPath := f.path + SnapshotExt @@ -1039,6 +1035,19 @@ func (f *Fragment) snapshot() error { // Reset operation count. f.opN = 0 + elapsed := time.Since(start) + message := fmt.Sprintf("fragment: snapshot complete %s/%s/%s/%d", f.db, f.frame, f.view, f.slice) + logger.Printf("%s took %s", message, elapsed) + + statsTags := []string{ + "db:" + f.db, + "frame:" + f.frame, + "view:" + f.view, + fmt.Sprintf("slice:%d", f.slice), + } + stats := f.stats.WithTags(statsTags...) + stats.Count("snapshot.count", 1) + stats.Histogram("snapshot.duration", elapsed.Seconds()) return nil }