Skip to content

Commit 08c7800

Browse files
committed
Do not rely on the magical init function
1 parent 5840e00 commit 08c7800

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

pkg/chunk/json_helpers.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ import (
1010
)
1111

1212
func init() {
13-
jsoniter.RegisterTypeDecoderFunc("labels.Labels", decodeLabels)
14-
jsoniter.RegisterTypeEncoderFunc("labels.Labels", encodeLabels, labelsIsEmpty)
13+
jsoniter.RegisterTypeDecoderFunc("labels.Labels", DecodeLabels)
14+
jsoniter.RegisterTypeEncoderFunc("labels.Labels", EncodeLabels, labelsIsEmpty)
1515
jsoniter.RegisterTypeDecoderFunc("model.Time", decodeModelTime)
1616
jsoniter.RegisterTypeEncoderFunc("model.Time", encodeModelTime, modelTimeIsEmpty)
1717
}
1818

1919
// Override Prometheus' labels.Labels decoder which goes via a map
20-
func decodeLabels(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
20+
func DecodeLabels(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
2121
labelsPtr := (*labels.Labels)(ptr)
2222
*labelsPtr = make(labels.Labels, 0, 10)
2323
iter.ReadMapCB(func(iter *jsoniter.Iterator, key string) bool {
@@ -31,7 +31,7 @@ func decodeLabels(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
3131
}
3232

3333
// Override Prometheus' labels.Labels encoder which goes via a map
34-
func encodeLabels(ptr unsafe.Pointer, stream *jsoniter.Stream) {
34+
func EncodeLabels(ptr unsafe.Pointer, stream *jsoniter.Stream) {
3535
labelsPtr := (*labels.Labels)(ptr)
3636
stream.WriteObjectStart()
3737
for i, v := range *labelsPtr {

pkg/querier/tripperware/query.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525
"github.com/prometheus/prometheus/util/jsonutil"
2626
"github.com/weaveworks/common/httpgrpc"
2727

28-
_ "github.com/cortexproject/cortex/pkg/chunk" // Register jsoniter type: labels.Labels.
28+
"github.com/cortexproject/cortex/pkg/chunk"
2929
"github.com/cortexproject/cortex/pkg/cortexpb"
3030
"github.com/cortexproject/cortex/pkg/util/limiter"
3131
"github.com/cortexproject/cortex/pkg/util/runutil"
@@ -115,7 +115,7 @@ func decodeSampleStream(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
115115
switch field {
116116
case "metric":
117117
lbls := labels.Labels{}
118-
iter.ReadVal(&lbls)
118+
chunk.DecodeLabels(unsafe.Pointer(&lbls), iter)
119119
ss.Labels = cortexpb.FromLabelsToLabelAdapters(lbls)
120120
case "values":
121121
for iter.ReadArray() {
@@ -299,7 +299,8 @@ func encodeSampleStream(ptr unsafe.Pointer, stream *jsoniter.Stream) {
299299
stream.WriteObjectStart()
300300

301301
stream.WriteObjectField(`metric`)
302-
stream.WriteVal(cortexpb.FromLabelAdaptersToLabels(ss.Labels))
302+
metric := cortexpb.FromLabelAdaptersToLabels(ss.Labels)
303+
chunk.EncodeLabels(unsafe.Pointer(&metric), stream)
303304

304305
if len(ss.Samples) > 0 {
305306
stream.WriteMore()
@@ -336,7 +337,7 @@ func decodeSample(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
336337
switch field {
337338
case "metric":
338339
lbls := labels.Labels{}
339-
iter.ReadVal(&lbls)
340+
chunk.DecodeLabels(unsafe.Pointer(&lbls), iter)
340341
ss.Labels = cortexpb.FromLabelsToLabelAdapters(lbls)
341342
case "value":
342343
ss.Sample = &cortexpb.Sample{}
@@ -356,7 +357,8 @@ func encodeSample(ptr unsafe.Pointer, stream *jsoniter.Stream) {
356357
stream.WriteObjectStart()
357358

358359
stream.WriteObjectField(`metric`)
359-
stream.WriteVal(cortexpb.FromLabelAdaptersToLabels(ss.Labels))
360+
metric := cortexpb.FromLabelAdaptersToLabels(ss.Labels)
361+
chunk.EncodeLabels(unsafe.Pointer(&metric), stream)
360362

361363
if ss.Sample != nil {
362364
stream.WriteMore()

0 commit comments

Comments
 (0)