(cfg *TraceByIDConfig, jobsPerQuery *prometheus.HistogramVec, logger log.Logger)
| 28 | } |
| 29 | |
| 30 | func newAsyncTraceIDSharder(cfg *TraceByIDConfig, jobsPerQuery *prometheus.HistogramVec, logger log.Logger) pipeline.AsyncMiddleware[combiner.PipelineResponse] { |
| 31 | return pipeline.AsyncMiddlewareFunc[combiner.PipelineResponse](func(next pipeline.AsyncRoundTripper[combiner.PipelineResponse]) pipeline.AsyncRoundTripper[combiner.PipelineResponse] { |
| 32 | // Calculate block boundaries: |
| 33 | // - If external is enabled: N-2 block shards (1 ingester + 1 external + N-2 blocks = N total) |
| 34 | // - If external is disabled: N-1 block shards (1 ingester + N-1 blocks = N total) |
| 35 | numBlockShards := cfg.QueryShards - 1 |
| 36 | if cfg.ExternalEnabled { |
| 37 | numBlockShards = cfg.QueryShards - 2 |
| 38 | } |
| 39 | return asyncTraceSharder{ |
| 40 | next: next, |
| 41 | cfg: cfg, |
| 42 | logger: logger, |
| 43 | blockBoundaries: blockboundary.CreateBlockBoundaries(numBlockShards), |
| 44 | jobsPerQuery: jobsPerQuery, |
| 45 | } |
| 46 | }) |
| 47 | } |
| 48 | |
| 49 | // RoundTrip implements http.RoundTripper |
| 50 | func (s asyncTraceSharder) RoundTrip(pipelineRequest pipeline.Request) (pipeline.Responses[combiner.PipelineResponse], error) { |
no test coverage detected