LabelNamesStream return all the label names.
(req *client.LabelNamesRequest, stream client.Ingester_LabelNamesStreamServer)
| 2007 | |
| 2008 | // LabelNamesStream return all the label names. |
| 2009 | func (i *Ingester) LabelNamesStream(req *client.LabelNamesRequest, stream client.Ingester_LabelNamesStreamServer) (err error) { |
| 2010 | defer recoverIngester(i.logger, &err) |
| 2011 | |
| 2012 | ctx := stream.Context() |
| 2013 | userID, userErr := users.TenantID(ctx) |
| 2014 | if userErr != nil { |
| 2015 | return userErr |
| 2016 | } |
| 2017 | |
| 2018 | // Set pprof labels for profiling |
| 2019 | pprof.Do(ctx, pprof.Labels("user", userID), func(ctx context.Context) { |
| 2020 | var resp *client.LabelNamesResponse |
| 2021 | var cleanup func() |
| 2022 | resp, cleanup, err = i.labelNamesCommon(ctx, req) |
| 2023 | defer cleanup() |
| 2024 | |
| 2025 | if err != nil { |
| 2026 | return |
| 2027 | } |
| 2028 | |
| 2029 | for i := 0; i < len(resp.LabelNames); i += metadataStreamBatchSize { |
| 2030 | j := min(i+metadataStreamBatchSize, len(resp.LabelNames)) |
| 2031 | resp := &client.LabelNamesStreamResponse{ |
| 2032 | LabelNames: resp.LabelNames[i:j], |
| 2033 | } |
| 2034 | err = client.SendLabelNamesStream(stream, resp) |
| 2035 | if err != nil { |
| 2036 | return |
| 2037 | } |
| 2038 | } |
| 2039 | }) |
| 2040 | |
| 2041 | return err |
| 2042 | } |
| 2043 | |
| 2044 | // labelNamesCommon return all the label names. |
| 2045 | // this should be used by LabelNames and LabelNamesStream. |
nothing calls this directly
no test coverage detected