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 }