desymbolizeLabels decodes label references, with given symbols to labels. Copied from the Prometheus: https://github.com/prometheus/prometheus/blob/v3.7.2/prompb/io/prometheus/write/v2/symbols.go#L83
(b *labels.ScratchBuilder, labelRefs []uint32, symbols []string)
| 18 | // desymbolizeLabels decodes label references, with given symbols to labels. |
| 19 | // Copied from the Prometheus: https://github.com/prometheus/prometheus/blob/v3.7.2/prompb/io/prometheus/write/v2/symbols.go#L83 |
| 20 | func desymbolizeLabels(b *labels.ScratchBuilder, labelRefs []uint32, symbols []string) (labels.Labels, error) { |
| 21 | if len(labelRefs)%2 != 0 { |
| 22 | return labels.EmptyLabels(), fmt.Errorf("invalid labelRefs length %d", len(labelRefs)) |
| 23 | } |
| 24 | |
| 25 | b.Reset() |
| 26 | for i := 0; i < len(labelRefs); i += 2 { |
| 27 | nameRef, valueRef := labelRefs[i], labelRefs[i+1] |
| 28 | if int(nameRef) >= len(symbols) || int(valueRef) >= len(symbols) { |
| 29 | return labels.EmptyLabels(), fmt.Errorf("labelRefs %d (name) = %d (value) outside of symbols table (size %d)", nameRef, valueRef, len(symbols)) |
| 30 | } |
| 31 | b.Add(symbols[nameRef], symbols[valueRef]) |
| 32 | } |
| 33 | b.Sort() |
| 34 | return b.Labels(), nil |
| 35 | } |
| 36 | |
| 37 | func MetadataV2MetricTypeToMetricType(mt MetadataV2_MetricType) model.MetricType { |
| 38 | switch mt { |