From 93aaf29e681053a1d23dcf855cfe92af8415260d Mon Sep 17 00:00:00 2001
From: Owen Diehl <ow.diehl@gmail.com>
Date: Fri, 3 May 2024 19:29:14 -0400
Subject: [PATCH] fix(spans): corrects early-close for a few spans (#12887)

---
 pkg/indexgateway/gateway.go              | 14 ++++++++++++--
 pkg/querier/queryrange/limits.go         |  1 -
 pkg/querier/queryrange/shard_resolver.go |  1 -
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/pkg/indexgateway/gateway.go b/pkg/indexgateway/gateway.go
index 0b6eda9409de5..81f98662a1c3e 100644
--- a/pkg/indexgateway/gateway.go
+++ b/pkg/indexgateway/gateway.go
@@ -418,7 +418,7 @@ func (g *Gateway) boundedShards(
 	// sending multiple requests to the entire keyspace).
 
 	logger := util_log.WithContext(ctx, g.log)
-	sp, ctx := opentracing.StartSpanFromContext(ctx, "indexgateway.getShardsWithBlooms")
+	sp, ctx := opentracing.StartSpanFromContext(ctx, "indexgateway.boundedShards")
 	defer sp.Finish()
 
 	// 1) for all bounds, get chunk refs
@@ -431,6 +431,11 @@ func (g *Gateway) boundedShards(
 	for _, g := range grps {
 		ct += len(g)
 	}
+
+	sp.LogKV(
+		"stage", "queried local index",
+		"index_chunks_resolved", ct,
+	)
 	// TODO(owen-d): pool
 	refs := make([]*logproto.ChunkRef, 0, ct)
 
@@ -443,11 +448,15 @@ func (g *Gateway) boundedShards(
 	filtered := refs
 
 	// 2) filter via blooms if enabled
-	if g.bloomQuerier != nil && len(syntax.ExtractLineFilters(p.Plan().AST)) > 0 {
+	filters := syntax.ExtractLineFilters(p.Plan().AST)
+	if g.bloomQuerier != nil && len(filters) > 0 {
 		filtered, err = g.bloomQuerier.FilterChunkRefs(ctx, instanceID, req.From, req.Through, refs, p.Plan())
 		if err != nil {
 			return err
 		}
+		sp.LogKV(
+			"stage", "queried bloom gateway",
+		)
 	}
 
 	g.metrics.preFilterChunks.WithLabelValues(routeShards).Observe(float64(ct))
@@ -508,6 +517,7 @@ func (g *Gateway) boundedShards(
 		"through", req.Through.Time().String(),
 		"length", req.Through.Time().Sub(req.From.Time()).String(),
 		"end_delta", time.Since(req.Through.Time()).String(),
+		"filters", len(filters),
 	)
 
 	// 3) build shards
diff --git a/pkg/querier/queryrange/limits.go b/pkg/querier/queryrange/limits.go
index 5d63402fc9f33..f90a9aa3c4e5e 100644
--- a/pkg/querier/queryrange/limits.go
+++ b/pkg/querier/queryrange/limits.go
@@ -341,7 +341,6 @@ func (q *querySizeLimiter) guessLimitName() string {
 
 func (q *querySizeLimiter) Do(ctx context.Context, r queryrangebase.Request) (queryrangebase.Response, error) {
 	log := spanlogger.FromContext(ctx)
-	defer log.Finish()
 
 	// Only support TSDB
 	schemaCfg, err := q.getSchemaCfg(r)
diff --git a/pkg/querier/queryrange/shard_resolver.go b/pkg/querier/queryrange/shard_resolver.go
index c8a66de690915..ab4d23e830eb7 100644
--- a/pkg/querier/queryrange/shard_resolver.go
+++ b/pkg/querier/queryrange/shard_resolver.go
@@ -222,7 +222,6 @@ func (r *dynamicShardResolver) ShardingRanges(expr syntax.Expr, targetBytesPerSh
 	error,
 ) {
 	log := spanlogger.FromContext(r.ctx)
-	defer log.Finish()
 
 	adjustedFrom := r.from