MCPcopy Create free account
hub / github.com/cortexproject/cortex / queryExemplars

Method queryExemplars

pkg/ingester/ingester.go:1820–1872  ·  view source on GitHub ↗
(ctx context.Context, userID string, req *client.ExemplarQueryRequest)

Source from the content-addressed store, hash-verified

1818}
1819
1820func (i *Ingester) queryExemplars(ctx context.Context, userID string, req *client.ExemplarQueryRequest) (*client.ExemplarQueryResponse, error) {
1821 from, through, matchers, err := client.FromExemplarQueryRequest(i.matchersCache, req)
1822 if err != nil {
1823 return nil, err
1824 }
1825
1826 i.metrics.queries.Inc()
1827
1828 db, err := i.getTSDB(userID)
1829 if err != nil || db == nil {
1830 return &client.ExemplarQueryResponse{}, nil
1831 }
1832
1833 if err = db.acquireReadLock(); err != nil {
1834 return &client.ExemplarQueryResponse{}, nil
1835 }
1836 defer db.releaseReadLock()
1837
1838 q, err := db.ExemplarQuerier(ctx)
1839 if err != nil {
1840 return nil, err
1841 }
1842
1843 // We will report *this* request in the error too.
1844 c, err := i.trackInflightQueryRequest()
1845 if err != nil {
1846 return nil, err
1847 }
1848
1849 // It's not required to sort series from a single ingester because series are sorted by the Exemplar Storage before returning from Select.
1850 res, err := q.Select(from, through, matchers...)
1851 c()
1852 if err != nil {
1853 return nil, err
1854 }
1855
1856 numExemplars := 0
1857
1858 result := &client.ExemplarQueryResponse{}
1859 for _, es := range res {
1860 ts := cortexpb.TimeSeries{
1861 Labels: cortexpb.FromLabelsToLabelAdapters(es.SeriesLabels),
1862 Exemplars: cortexpb.FromExemplarsToExemplarProtos(es.Exemplars),
1863 }
1864
1865 numExemplars += len(ts.Exemplars)
1866 result.Timeseries = append(result.Timeseries, ts)
1867 }
1868
1869 i.metrics.queriedExemplars.Observe(float64(numExemplars))
1870
1871 return result, nil
1872}
1873
1874// LabelValues returns all label values that are associated with a given label name.
1875func (i *Ingester) LabelValues(ctx context.Context, req *client.LabelValuesRequest) (resp *client.LabelValuesResponse, err error) {

Callers 1

QueryExemplarsMethod · 0.95

Implementers 1

Ingesterpkg/ingester/ingester.go

Calls 10

getTSDBMethod · 0.95
FromExemplarQueryRequestFunction · 0.92
acquireReadLockMethod · 0.80
releaseReadLockMethod · 0.80
IncMethod · 0.45
ExemplarQuerierMethod · 0.45
SelectMethod · 0.45

Tested by

no test coverage detected