@@ -25,6 +25,7 @@ import (
2525 "github.com/prometheus/prometheus/util/jsonutil"
2626 "github.com/weaveworks/common/httpgrpc"
2727
28+ "github.com/cortexproject/cortex/pkg/chunk"
2829 "github.com/cortexproject/cortex/pkg/cortexpb"
2930 "github.com/cortexproject/cortex/pkg/util/limiter"
3031 "github.com/cortexproject/cortex/pkg/util/runutil"
@@ -113,12 +114,8 @@ func decodeSampleStream(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
113114 for field := iter .ReadObject (); field != "" ; field = iter .ReadObject () {
114115 switch field {
115116 case "metric" :
116- metricString := iter .ReadAny ().ToString ()
117117 lbls := labels.Labels {}
118- if err := json .UnmarshalFromString (metricString , & lbls ); err != nil {
119- iter .ReportError ("unmarshal SampleStream" , err .Error ())
120- return
121- }
118+ chunk .DecodeLabels (unsafe .Pointer (& lbls ), iter )
122119 ss .Labels = cortexpb .FromLabelsToLabelAdapters (lbls )
123120 case "values" :
124121 for iter .ReadArray () {
@@ -302,12 +299,8 @@ func encodeSampleStream(ptr unsafe.Pointer, stream *jsoniter.Stream) {
302299 stream .WriteObjectStart ()
303300
304301 stream .WriteObjectField (`metric` )
305- lbls , err := cortexpb .FromLabelAdaptersToLabels (ss .Labels ).MarshalJSON ()
306- if err != nil {
307- stream .Error = err
308- return
309- }
310- stream .SetBuffer (append (stream .Buffer (), lbls ... ))
302+ metric := cortexpb .FromLabelAdaptersToLabels (ss .Labels )
303+ chunk .EncodeLabels (unsafe .Pointer (& metric ), stream )
311304
312305 if len (ss .Samples ) > 0 {
313306 stream .WriteMore ()
@@ -343,12 +336,8 @@ func decodeSample(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
343336 for field := iter .ReadObject (); field != "" ; field = iter .ReadObject () {
344337 switch field {
345338 case "metric" :
346- metricString := iter .ReadAny ().ToString ()
347339 lbls := labels.Labels {}
348- if err := json .UnmarshalFromString (metricString , & lbls ); err != nil {
349- iter .ReportError ("unmarshal Sample" , err .Error ())
350- return
351- }
340+ chunk .DecodeLabels (unsafe .Pointer (& lbls ), iter )
352341 ss .Labels = cortexpb .FromLabelsToLabelAdapters (lbls )
353342 case "value" :
354343 ss .Sample = & cortexpb.Sample {}
@@ -368,12 +357,8 @@ func encodeSample(ptr unsafe.Pointer, stream *jsoniter.Stream) {
368357 stream .WriteObjectStart ()
369358
370359 stream .WriteObjectField (`metric` )
371- lbls , err := cortexpb .FromLabelAdaptersToLabels (ss .Labels ).MarshalJSON ()
372- if err != nil {
373- stream .Error = err
374- return
375- }
376- stream .SetBuffer (append (stream .Buffer (), lbls ... ))
360+ metric := cortexpb .FromLabelAdaptersToLabels (ss .Labels )
361+ chunk .EncodeLabels (unsafe .Pointer (& metric ), stream )
377362
378363 if ss .Sample != nil {
379364 stream .WriteMore ()
0 commit comments