From 7e24edd506b72da7f20fc3dc0f1a1bcd1bc9e8aa Mon Sep 17 00:00:00 2001 From: Zakhar Bessarab <z.bessarab@victoriametrics.com> Date: Thu, 20 Jul 2023 15:54:22 +0400 Subject: [PATCH] app/vlinsert/loki: fix compatibility with latest MetricsQL lib (#4675) Loki uses default labels format without "or" operator. This format can't create a list of LabelFilters, so only first set of LabelFilters should be used. Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com> --- app/vlinsert/loki/loki_protobuf.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/vlinsert/loki/loki_protobuf.go b/app/vlinsert/loki/loki_protobuf.go index db88a40c04..a55cad1383 100644 --- a/app/vlinsert/loki/loki_protobuf.go +++ b/app/vlinsert/loki/loki_protobuf.go @@ -8,13 +8,14 @@ import ( "github.com/golang/snappy" + "github.com/VictoriaMetrics/metrics" + "github.com/VictoriaMetrics/metricsql" + "github.com/VictoriaMetrics/VictoriaMetrics/lib/bytesutil" "github.com/VictoriaMetrics/VictoriaMetrics/lib/httpserver" "github.com/VictoriaMetrics/VictoriaMetrics/lib/logstorage" "github.com/VictoriaMetrics/VictoriaMetrics/lib/slicesutil" "github.com/VictoriaMetrics/VictoriaMetrics/lib/writeconcurrencylimiter" - "github.com/VictoriaMetrics/metrics" - "github.com/VictoriaMetrics/metricsql" ) var ( @@ -108,10 +109,15 @@ func parseLogFields(s string, dst []logstorage.Field) ([]logstorage.Field, error return nil, fmt.Errorf("failed to parse stream labels; got %q", expr.AppendString(nil)) } + // Expecting only label filters without MetricsQL "or" operator. + if len(me.LabelFilterss) != 1 { + return nil, fmt.Errorf("unexpected format of log fields; got %q", s) + } + // Allocate space for labels + msg field. // Msg field is added by caller. - dst = slicesutil.ResizeNoCopyMayOverallocate(dst, len(me.LabelFilters)+1) - for i, l := range me.LabelFilters { + dst = slicesutil.ResizeNoCopyMayOverallocate(dst, len(me.LabelFilterss[0])) + for i, l := range me.LabelFilterss[0] { dst[i].Name = l.Label dst[i].Value = l.Value }