@@ -95,7 +95,7 @@ func (s *FuncAsPercent) Exec(cache map[Req][]models.Series) ([]models.Series, er
95
95
96
96
for _ , serie1 := range metaSeries [key ] {
97
97
// no total
98
- copyDatapoints (& serie1 )
98
+ deepCopySerieElements (& serie1 )
99
99
if _ , ok := totalSeries [key ]; ! ok {
100
100
serie1 .QueryPatt = fmt .Sprintf ("asPercent(%s,MISSING)" , serie1 .QueryPatt )
101
101
serie1 .Target = fmt .Sprintf ("asPercent(%s,MISSING)" , serie1 .Target )
@@ -143,7 +143,7 @@ func (s *FuncAsPercent) Exec(cache map[Req][]models.Series) ([]models.Series, er
143
143
serie1 .QueryPatt = fmt .Sprintf ("asPercent(%s,%s)" , serie1 .QueryPatt , serie2 .QueryPatt )
144
144
serie1 .Target = fmt .Sprintf ("asPercent(%s,%s)" , serie1 .Target , serie2 .Target )
145
145
serie1 .Tags = map [string ]string {"name" : serie1 .Target }
146
- copyDatapoints (& serie1 )
146
+ deepCopySerieElements (& serie1 )
147
147
for i := range serie1 .Datapoints {
148
148
serie1 .Datapoints [i ].Val = computeAsPercent (serie1 .Datapoints [i ].Val , serie2 .Datapoints [i ].Val )
149
149
}
@@ -161,7 +161,7 @@ func (s *FuncAsPercent) Exec(cache map[Req][]models.Series) ([]models.Series, er
161
161
serie .QueryPatt = fmt .Sprintf ("asPercent(%s,%s)" , serie .QueryPatt , totalsSerie .QueryPatt )
162
162
serie .Target = fmt .Sprintf ("asPercent(%s,%s)" , serie .Target , totalsSerie .QueryPatt )
163
163
serie .Tags = map [string ]string {"name" : serie .Target }
164
- copyDatapoints (& serie )
164
+ deepCopySerieElements (& serie )
165
165
for i := range serie .Datapoints {
166
166
var totalVal float64
167
167
if len (totalsSerie .Datapoints ) > i {
@@ -214,7 +214,7 @@ func getTotalSeries(totalSeriesLists map[string][]models.Series) map[string]mode
214
214
// Datapoints are always a copy
215
215
func sumSeries (series []models.Series ) models.Series {
216
216
if len (series ) == 1 {
217
- copyDatapoints (& series [0 ])
217
+ deepCopySerieElements (& series [0 ])
218
218
return series [0 ]
219
219
}
220
220
out := pointSlicePool .Get ().([]schema.Point )
@@ -244,10 +244,15 @@ Loop:
244
244
}
245
245
}
246
246
247
- func copyDatapoints (serie * models.Series ) {
247
+ func deepCopySerieElements (serie * models.Series ) {
248
248
out := pointSlicePool .Get ().([]schema.Point )
249
249
for _ , p := range serie .Datapoints {
250
250
out = append (out , p )
251
251
}
252
252
serie .Datapoints = out
253
+ newTags := make (map [string ]string , len (serie .Tags ))
254
+ for k , v := range serie .Tags {
255
+ newTags [k ] = v
256
+ }
257
+ serie .Tags = newTags
253
258
}
0 commit comments