From 804a1d712521690ce911882bca2978379bcf809a Mon Sep 17 00:00:00 2001 From: dsotirakis Date: Fri, 4 Jun 2021 16:54:35 +0300 Subject: [PATCH] Fix bug which appended same fields over and over again --- pkg/tsdb/elasticsearch/response_parser.go | 4 ++++ .../elasticsearch/response_parser_test.go | 20 +++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/pkg/tsdb/elasticsearch/response_parser.go b/pkg/tsdb/elasticsearch/response_parser.go index 857aa34aa3a..37da067576e 100644 --- a/pkg/tsdb/elasticsearch/response_parser.go +++ b/pkg/tsdb/elasticsearch/response_parser.go @@ -210,6 +210,8 @@ func (rp *responseParser) processMetrics(esAgg *simplejson.Json, target *Query, sort.Strings(percentileKeys) for _, percentileName := range percentileKeys { tags := make(map[string]string, len(props)) + timeVector := make([]time.Time, 0, len(esAggBuckets)) + values := make([]*float64, 0, len(esAggBuckets)) for k, v := range props { tags[k] = v @@ -285,6 +287,8 @@ func (rp *responseParser) processMetrics(esAgg *simplejson.Json, target *Query, } tags := make(map[string]string, len(props)) + timeVector := make([]time.Time, 0, len(esAggBuckets)) + values := make([]*float64, 0, len(esAggBuckets)) for k, v := range props { tags[k] = v diff --git a/pkg/tsdb/elasticsearch/response_parser_test.go b/pkg/tsdb/elasticsearch/response_parser_test.go index 62fd631b7b9..1bcc9cb5438 100644 --- a/pkg/tsdb/elasticsearch/response_parser_test.go +++ b/pkg/tsdb/elasticsearch/response_parser_test.go @@ -333,9 +333,9 @@ func TestResponseParser(t *testing.T) { require.Equal(t, frame.Name, "p90") require.Len(t, frame.Fields, 2) require.Equal(t, frame.Fields[0].Name, "time") - require.Equal(t, frame.Fields[0].Len(), 4) + require.Equal(t, frame.Fields[0].Len(), 2) require.Equal(t, frame.Fields[1].Name, "value") - require.Equal(t, frame.Fields[1].Len(), 4) + require.Equal(t, frame.Fields[1].Len(), 2) }) t.Run("With extended stats", func(t *testing.T) { @@ -417,17 +417,17 @@ func TestResponseParser(t *testing.T) { require.Equal(t, frame.Name, "server1 Std Dev Lower") require.Len(t, frame.Fields, 2) require.Equal(t, frame.Fields[0].Name, "time") - require.Equal(t, frame.Fields[0].Len(), 2) + require.Equal(t, frame.Fields[0].Len(), 1) require.Equal(t, frame.Fields[1].Name, "value") - require.Equal(t, frame.Fields[1].Len(), 2) + require.Equal(t, frame.Fields[1].Len(), 1) frame = dataframes[2] require.Equal(t, frame.Name, "server1 Std Dev Upper") require.Len(t, frame.Fields, 2) require.Equal(t, frame.Fields[0].Name, "time") - require.Equal(t, frame.Fields[0].Len(), 3) + require.Equal(t, frame.Fields[0].Len(), 1) require.Equal(t, frame.Fields[1].Name, "value") - require.Equal(t, frame.Fields[1].Len(), 3) + require.Equal(t, frame.Fields[1].Len(), 1) frame = dataframes[3] require.Equal(t, frame.Name, "server2 Max") @@ -441,17 +441,17 @@ func TestResponseParser(t *testing.T) { require.Equal(t, frame.Name, "server2 Std Dev Lower") require.Len(t, frame.Fields, 2) require.Equal(t, frame.Fields[0].Name, "time") - require.Equal(t, frame.Fields[0].Len(), 2) + require.Equal(t, frame.Fields[0].Len(), 1) require.Equal(t, frame.Fields[1].Name, "value") - require.Equal(t, frame.Fields[1].Len(), 2) + require.Equal(t, frame.Fields[1].Len(), 1) frame = dataframes[5] require.Equal(t, frame.Name, "server2 Std Dev Upper") require.Len(t, frame.Fields, 2) require.Equal(t, frame.Fields[0].Name, "time") - require.Equal(t, frame.Fields[0].Len(), 3) + require.Equal(t, frame.Fields[0].Len(), 1) require.Equal(t, frame.Fields[1].Name, "value") - require.Equal(t, frame.Fields[1].Len(), 3) + require.Equal(t, frame.Fields[1].Len(), 1) }) t.Run("Single group by with alias pattern", func(t *testing.T) {