Add stats to snapshot

This commit is contained in:
Alan Bernstein 2017-04-21 12:05:35 -05:00
parent 579b381c12
commit 0e5ba0c56f

View file

@ -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
}