(ctx context.Context, userID string, req *client.QueryRequest, stream client.Ingester_QueryStreamServer, spanlog *spanlogger.SpanLogger)
| 2427 | } |
| 2428 | |
| 2429 | func (i *Ingester) queryStream(ctx context.Context, userID string, req *client.QueryRequest, stream client.Ingester_QueryStreamServer, spanlog *spanlogger.SpanLogger) error { |
| 2430 | from, through, matchers, err := client.FromQueryRequest(i.matchersCache, req) |
| 2431 | if err != nil { |
| 2432 | return err |
| 2433 | } |
| 2434 | |
| 2435 | matchers, shardMatcher, err := querysharding.ExtractShardingMatchers(matchers) |
| 2436 | if err != nil { |
| 2437 | return err |
| 2438 | } |
| 2439 | |
| 2440 | defer shardMatcher.Close() |
| 2441 | |
| 2442 | i.metrics.queries.Inc() |
| 2443 | |
| 2444 | db, err := i.getTSDB(userID) |
| 2445 | if err != nil || db == nil { |
| 2446 | return nil |
| 2447 | } |
| 2448 | |
| 2449 | if err := db.acquireReadLock(); err != nil { |
| 2450 | return nil |
| 2451 | } |
| 2452 | defer db.releaseReadLock() |
| 2453 | |
| 2454 | numSamples := 0 |
| 2455 | numSeries := 0 |
| 2456 | totalDataBytes := 0 |
| 2457 | numChunks := 0 |
| 2458 | numSeries, numSamples, totalDataBytes, numChunks, err = i.queryStreamChunks(ctx, userID, db, int64(from), int64(through), matchers, shardMatcher, stream) |
| 2459 | |
| 2460 | if err != nil { |
| 2461 | return err |
| 2462 | } |
| 2463 | |
| 2464 | i.metrics.queriedSeries.Observe(float64(numSeries)) |
| 2465 | i.metrics.queriedSamples.Observe(float64(numSamples)) |
| 2466 | i.metrics.queriedChunks.Observe(float64(numChunks)) |
| 2467 | level.Debug(spanlog).Log("series", numSeries, "samples", numSamples, "data_bytes", totalDataBytes, "chunks", numChunks) |
| 2468 | spanlog.SetTag("series", numSeries) |
| 2469 | spanlog.SetTag("samples", numSamples) |
| 2470 | spanlog.SetTag("data_bytes", totalDataBytes) |
| 2471 | spanlog.SetTag("chunks", numChunks) |
| 2472 | return nil |
| 2473 | } |
| 2474 | |
| 2475 | func (i *Ingester) trackInflightQueryRequest() (func(), error) { |
| 2476 | gl := i.getInstanceLimits() |
no test coverage detected