From 1b8a474612f200b0e37a61e789fce4827363e666 Mon Sep 17 00:00:00 2001 From: Brian Brazil Date: Wed, 21 Dec 2016 11:33:28 +0000 Subject: [PATCH] Don't clone the metric if there's no remote writes. The metric clone can't be further optimised, and is a non-trivial memory allocation cost so fast path it if there's no remote writes configured. --- storage/remote/remote_reloadable.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/storage/remote/remote_reloadable.go b/storage/remote/remote_reloadable.go index d42a187f32..abe9abe543 100644 --- a/storage/remote/remote_reloadable.go +++ b/storage/remote/remote_reloadable.go @@ -77,6 +77,10 @@ func (s *ReloadableStorage) Append(smpl *model.Sample) error { s.mtx.RLock() defer s.mtx.RUnlock() + if s.queue == nil { + return nil + } + var snew model.Sample snew = *smpl snew.Metric = smpl.Metric.Clone() @@ -92,9 +96,7 @@ func (s *ReloadableStorage) Append(smpl *model.Sample) error { if snew.Metric == nil { return nil } - if s.queue != nil { - s.queue.Append(&snew) - } + s.queue.Append(&snew) return nil }