MCPcopy Index your code
hub / github.com/cortexproject/cortex / runRequest

Method runRequest

pkg/querier/worker/frontend_processor.go:123–172  ·  view source on GitHub ↗
(ctx context.Context, request *httpgrpc.HTTPRequest, statsEnabled bool, sendHTTPResponse func(response *httpgrpc.HTTPResponse, stats *querier_stats.QueryStats) error)

Source from the content-addressed store, hash-verified

121}
122
123func (fp *frontendProcessor) runRequest(ctx context.Context, request *httpgrpc.HTTPRequest, statsEnabled bool, sendHTTPResponse func(response *httpgrpc.HTTPResponse, stats *querier_stats.QueryStats) error) {
124 var stats *querier_stats.QueryStats
125 if statsEnabled {
126 stats, ctx = querier_stats.ContextWithEmptyStats(ctx)
127 }
128
129 headers := make(map[string]string, 0)
130 for _, h := range request.Headers {
131 headers[h.Key] = h.Values[0]
132 }
133 ctx = requestmeta.ContextWithRequestMetadataMapFromHeaders(ctx, headers, fp.targetHeaders)
134
135 orgID, ok := headers[textproto.CanonicalMIMEHeaderKey(user.OrgIDHeaderName)]
136 if ok {
137 ctx = user.InjectOrgID(ctx, orgID)
138 }
139 logger := util_log.WithContext(ctx, fp.log)
140 if statsEnabled {
141 level.Info(logger).Log("msg", "started running request")
142 }
143
144 response, err := fp.handler.Handle(ctx, request)
145 if err != nil {
146 var ok bool
147 response, ok = httpgrpc.HTTPResponseFromError(err)
148 if !ok {
149 response = &httpgrpc.HTTPResponse{
150 Code: http.StatusInternalServerError,
151 Body: []byte(err.Error()),
152 }
153 }
154 }
155 if statsEnabled {
156 level.Info(logger).Log("msg", "finished request", "status_code", response.Code, "response_size", len(response.GetBody()))
157 }
158
159 // Ensure responses that are too big are not retried.
160 if len(response.Body) >= fp.maxMessageSize {
161 errMsg := fmt.Sprintf("response larger than the max (%d vs %d)", len(response.Body), fp.maxMessageSize)
162 response = &httpgrpc.HTTPResponse{
163 Code: http.StatusRequestEntityTooLarge,
164 Body: []byte(errMsg),
165 }
166 level.Error(fp.log).Log("msg", "error processing query", "err", errMsg)
167 }
168
169 if err := sendHTTPResponse(response, stats); err != nil {
170 level.Error(fp.log).Log("msg", "error processing requests", "err", err)
171 }
172}

Callers 1

processMethod · 0.95

Calls 5

GetBodyMethod · 0.80
HandleMethod · 0.65
LogMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected