From ec7d453fefbb7ce6023db4cd6ba56b9a1824e603 Mon Sep 17 00:00:00 2001 From: Cyril Tovena Date: Fri, 17 May 2019 03:26:44 -0400 Subject: [PATCH] fixes ingester querier not honoring filters (#594) --- pkg/ingester/instance.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/pkg/ingester/instance.go b/pkg/ingester/instance.go index cd2e2b3490..0158179569 100644 --- a/pkg/ingester/instance.go +++ b/pkg/ingester/instance.go @@ -12,6 +12,7 @@ import ( "github.com/cortexproject/cortex/pkg/ingester/client" "github.com/cortexproject/cortex/pkg/ingester/index" + cutil "github.com/cortexproject/cortex/pkg/util" "github.com/grafana/loki/pkg/helpers" "github.com/grafana/loki/pkg/iter" @@ -149,18 +150,27 @@ func (i *instance) lookupStreams(req *logproto.QueryRequest, matchers []*labels. i.streamsMtx.RLock() defer i.streamsMtx.RUnlock() - var err error + filters, matchers := cutil.SplitFiltersAndMatchers(matchers) ids := i.index.Lookup(matchers) - iterators := make([]iter.EntryIterator, len(ids)) - for j := range ids { - stream, ok := i.streams[ids[j]] + iterators := make([]iter.EntryIterator, 0, len(ids)) + +outer: + for _, streamID := range ids { + stream, ok := i.streams[streamID] if !ok { return nil, ErrStreamMissing } - iterators[j], err = stream.Iterator(req.Start, req.End, req.Direction) + lbs := client.FromLabelAdaptersToLabels(stream.labels) + for _, filter := range filters { + if !filter.Matches(lbs.Get(filter.Name)) { + continue outer + } + } + iter, err := stream.Iterator(req.Start, req.End, req.Direction) if err != nil { return nil, err } + iterators = append(iterators, iter) } return iterators, nil }