[v10.3.x] Loki: Fix bug duplicating parsed labels across multiple log lines (#80423)
Loki: Fix bug duplicating parsed labels across multiple log lines (#80292)
(cherry picked from commit e1aa8a95d9)
Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
This commit is contained in:
co-authored by
Sven Grossmann
parent
aa03b8f8a7
commit
be211fbccb
@@ -965,7 +965,7 @@ func readCategorizedStream(iter *jsonitere.Iterator) backend.DataResponse {
|
||||
tsField := data.NewFieldFromFieldType(data.FieldTypeString, 0)
|
||||
tsField.Name = "TS"
|
||||
|
||||
labels := data.Labels{}
|
||||
indexedLabels := data.Labels{}
|
||||
|
||||
for more, err := iter.ReadArray(); more; more, err = iter.ReadArray() {
|
||||
if err != nil {
|
||||
@@ -981,8 +981,8 @@ func readCategorizedStream(iter *jsonitere.Iterator) backend.DataResponse {
|
||||
case "stream":
|
||||
// we need to clear `labels`, because `iter.ReadVal`
|
||||
// only appends to it
|
||||
labels = data.Labels{}
|
||||
if err = iter.ReadVal(&labels); err != nil {
|
||||
indexedLabels = data.Labels{}
|
||||
if err = iter.ReadVal(&indexedLabels); err != nil {
|
||||
return rspErr(err)
|
||||
}
|
||||
|
||||
@@ -1030,23 +1030,25 @@ func readCategorizedStream(iter *jsonitere.Iterator) backend.DataResponse {
|
||||
}
|
||||
|
||||
typeMap := data.Labels{}
|
||||
clonedLabels := data.Labels{}
|
||||
|
||||
for k := range labels {
|
||||
for k := range indexedLabels {
|
||||
typeMap[k] = "I"
|
||||
clonedLabels[k] = indexedLabels[k]
|
||||
}
|
||||
|
||||
// merge all labels (indexed, parsed, structuredMetadata) into one dataframe field
|
||||
for k, v := range structuredMetadataMap {
|
||||
labels[k] = fmt.Sprintf("%s", v)
|
||||
clonedLabels[k] = fmt.Sprintf("%s", v)
|
||||
typeMap[k] = "S"
|
||||
}
|
||||
|
||||
for k, v := range parsedLabelsMap {
|
||||
labels[k] = fmt.Sprintf("%s", v)
|
||||
clonedLabels[k] = fmt.Sprintf("%s", v)
|
||||
typeMap[k] = "P"
|
||||
}
|
||||
|
||||
labelJson, err := labelsToRawJson(labels)
|
||||
labelJson, err := labelsToRawJson(clonedLabels)
|
||||
if err != nil {
|
||||
return rspErr(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user