MCPcopy
hub / github.com/grafana/tempo / newAsyncTraceIDSharder

Function newAsyncTraceIDSharder

modules/frontend/traceid_sharder.go:30–47  ·  view source on GitHub ↗
(cfg *TraceByIDConfig, jobsPerQuery *prometheus.HistogramVec, logger log.Logger)

Source from the content-addressed store, hash-verified

28}
29
30func 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
50func (s asyncTraceSharder) RoundTrip(pipelineRequest pipeline.Request) (pipeline.Responses[combiner.PipelineResponse], error) {

Callers 1

NewFunction · 0.85

Calls 1

CreateBlockBoundariesFunction · 0.92

Tested by

no test coverage detected