(server frontendv1pb.Frontend_ProcessServer)
| 348 | } |
| 349 | |
| 350 | func getQuerierInfo(server frontendv1pb.Frontend_ProcessServer) (string, int32, error) { |
| 351 | err := server.Send(&frontendv1pb.FrontendToClient{ |
| 352 | Type: frontendv1pb.Type_GET_ID, |
| 353 | // Old queriers don't support GET_ID, and will try to use the request. |
| 354 | // To avoid confusing them, include dummy request. |
| 355 | HttpRequest: &httpgrpc.HTTPRequest{ |
| 356 | Method: "GET", |
| 357 | Url: "/invalid_request_sent_by_frontend", |
| 358 | }, |
| 359 | }) |
| 360 | if err != nil { |
| 361 | return "", int32(frontendv1pb.Feature_NONE), err |
| 362 | } |
| 363 | |
| 364 | resp, err := server.Recv() |
| 365 | if err != nil { |
| 366 | return "", int32(frontendv1pb.Feature_NONE), err |
| 367 | } |
| 368 | |
| 369 | // Old queriers will return empty string, which is fine. All old queriers will be |
| 370 | // treated as single querier with lot of connections. |
| 371 | // (Note: if resp is nil, GetClientID() returns "") |
| 372 | return resp.GetClientID(), resp.Features, err |
| 373 | } |
| 374 | |
| 375 | func (f *Frontend) queueRequest(ctx context.Context, req *request) error { |
| 376 | tenantIDs, err := tenant.TenantIDs(ctx) |
no test coverage detected