@@ -142,9 +142,9 @@ func (q *Querier) Run(ctx context.Context, interval time.Duration) {
142142 run := func () {
143143 // Since a lot of these queries are dependent on other queries, run
144144 // them one at a time.
145+ q .queryProfileTypes (ctx , interval )
145146 q .queryLabels (ctx , interval )
146147 q .queryValues (ctx , interval )
147- q .queryProfileTypes (ctx , interval )
148148 q .queryRange (ctx )
149149 q .querySingle (ctx )
150150 q .queryMerge (ctx )
@@ -170,6 +170,13 @@ func (q *Querier) Stop() {
170170}
171171
172172func (q * Querier ) queryLabels (ctx context.Context , interval time.Duration ) {
173+ // Pick a random profile type if available
174+ var profileType * string
175+ if len (q .profileTypes ) > 0 {
176+ pt := q .profileTypes [q .rng .Intn (len (q .profileTypes ))]
177+ profileType = & pt
178+ }
179+
173180 for _ , tr := range q .queryTimeRanges {
174181 rangeEnd := time .Now ()
175182 rangeStart := rangeEnd .Add (- 1 * tr )
@@ -180,19 +187,31 @@ func (q *Querier) queryLabels(ctx context.Context, interval time.Duration) {
180187 defer func () { count ++ }()
181188
182189 queryStart := time .Now ()
183- resp , err = q . client . Labels ( ctx , connect . NewRequest ( & queryv1alpha1.LabelsRequest {
190+ req := & queryv1alpha1.LabelsRequest {
184191 Start : timestamppb .New (rangeStart ),
185192 End : timestamppb .New (rangeEnd ),
186- }))
193+ }
194+ if profileType != nil {
195+ req .ProfileType = profileType
196+ }
197+ resp , err = q .client .Labels (ctx , connect .NewRequest (req ))
187198 latency := time .Since (queryStart )
188199 if err != nil {
189200 q .metrics .labelsHistogram .WithLabelValues (connect .CodeOf (err ).String ()).Observe (latency .Seconds ())
190- log .Printf ("labels(over=%s): failed to make request %d: %v\n " , tr , count , err )
201+ if profileType != nil {
202+ log .Printf ("labels(type=%s,over=%s): failed to make request %d: %v\n " , * profileType , tr , count , err )
203+ } else {
204+ log .Printf ("labels(over=%s): failed to make request %d: %v\n " , tr , count , err )
205+ }
191206 return
192207 }
193208 q .metrics .labelsHistogram .WithLabelValues (grpcCodeOK ).Observe (latency .Seconds ())
194209 q .labels = append (q .labels [:0 ], resp .Msg .LabelNames ... )
195- log .Printf ("labels(over=%s): took %v and got %d results\n " , tr , latency , len (resp .Msg .LabelNames ))
210+ if profileType != nil {
211+ log .Printf ("labels(type=%s,over=%s): took %v and got %d results\n " , * profileType , tr , latency , len (resp .Msg .LabelNames ))
212+ } else {
213+ log .Printf ("labels(over=%s): took %v and got %d results\n " , tr , latency , len (resp .Msg .LabelNames ))
214+ }
196215
197216 return nil
198217 }
@@ -212,6 +231,13 @@ func (q *Querier) queryValues(ctx context.Context, interval time.Duration) {
212231 }
213232 label := q .labels [q .rng .Intn (len (q .labels ))]
214233
234+ // Pick a random profile type if available
235+ var profileType * string
236+ if len (q .profileTypes ) > 0 {
237+ pt := q .profileTypes [q .rng .Intn (len (q .profileTypes ))]
238+ profileType = & pt
239+ }
240+
215241 for _ , tr := range q .queryTimeRanges {
216242 rangeEnd := time .Now ()
217243 rangeStart := rangeEnd .Add (- 1 * tr )
@@ -221,20 +247,32 @@ func (q *Querier) queryValues(ctx context.Context, interval time.Duration) {
221247 operation := func () (err error ) {
222248 defer func () { count ++ }()
223249 queryStart := time .Now ()
224- resp , err = q . client . Values ( ctx , connect . NewRequest ( & queryv1alpha1.ValuesRequest {
250+ req := & queryv1alpha1.ValuesRequest {
225251 LabelName : label ,
226252 Match : nil ,
227253 Start : timestamppb .New (rangeStart ),
228254 End : timestamppb .New (rangeEnd ),
229- }))
255+ }
256+ if profileType != nil {
257+ req .ProfileType = profileType
258+ }
259+ resp , err = q .client .Values (ctx , connect .NewRequest (req ))
230260 latency := time .Since (queryStart )
231261 if err != nil {
232262 q .metrics .valuesHistogram .WithLabelValues (connect .CodeOf (err ).String ()).Observe (latency .Seconds ())
233- log .Printf ("values(label=%s,over=%s): failed to make request %d: %v\n " , label , tr , count , err )
263+ if profileType != nil {
264+ log .Printf ("values(label=%s,type=%s,over=%s): failed to make request %d: %v\n " , label , * profileType , tr , count , err )
265+ } else {
266+ log .Printf ("values(label=%s,over=%s): failed to make request %d: %v\n " , label , tr , count , err )
267+ }
234268 return
235269 }
236270 q .metrics .valuesHistogram .WithLabelValues (grpcCodeOK ).Observe (latency .Seconds ())
237- log .Printf ("values(label=%s,over=%s): took %v and got %d results\n " , label , tr , latency , len (resp .Msg .LabelValues ))
271+ if profileType != nil {
272+ log .Printf ("values(label=%s,type=%s,over=%s): took %v and got %d results\n " , label , * profileType , tr , latency , len (resp .Msg .LabelValues ))
273+ } else {
274+ log .Printf ("values(label=%s,over=%s): took %v and got %d results\n " , label , tr , latency , len (resp .Msg .LabelValues ))
275+ }
238276
239277 return nil
240278 }
0 commit comments